zoukankan      html  css  js  c++  java
  • URAL1118. Nontrivial Numbers

    1118

    优化

    1.枚举到sqrt(n)2.区间有质数直接输出最大质数3.a=1 直接输出1 4.边+边与最小值比较

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<cmath>
     7 using namespace std;
     8 #define N 1000010
     9 double minz = N;
    10 bool f[N];
    11 void init()
    12 {
    13     int i,j;
    14     for(i = 2 ; i <= 1000 ; i++)
    15     {
    16         if(!f[i])
    17         {
    18             for(j = i+i ; j <= N-10 ; j+=i)
    19             f[j] =  1;
    20         }
    21     }
    22 }
    23 double find(int k)
    24 {
    25     int i;
    26     int x = sqrt(k*1.0);
    27     double sum=0;
    28     sum+=1;
    29     for(i = 2 ; i <= x ; i++)
    30     {
    31         if(k%i==0)
    32         {
    33            sum+=k/i+i;
    34         }
    35         if(sum/k>minz) break;
    36     }
    37     return sum/k;
    38 }
    39 int main()
    40 {
    41     int i,a,b;
    42     init();
    43     cin>>a>>b;
    44     int ans=-1;
    45     if(a==1)
    46     {
    47         printf("1
    ");
    48         return 0;
    49     }
    50     for(i = a ; i <= b ; i++)
    51     {
    52         if(!f[i]) ans = i;
    53     }
    54     if(ans!=-1)
    55     {
    56         printf("%d
    ",ans);
    57         return 0;
    58     }
    59     for(i = a; i <= b ; i++)
    60     {
    61         double s = find(i);
    62         if(s<minz)
    63         {
    64             ans = i;
    65             minz = s;
    66         }
    67     }
    68     printf("%d
    ",ans);
    69     return 0;
    70 }
  • 相关阅读:
    jQuery应用 代码片段
    正则表达式大全
    js表单编程
    补充回顾
    Socket网路编程
    异常处理
    day18-2 反射详解
    day18-1 面向对象进阶
    day18-1 多态
    day17-2 继承
  • 原文地址:https://www.cnblogs.com/shangyu/p/3406965.html
Copyright © 2011-2022 走看看