zoukankan      html  css  js  c++  java
  • 2020年2月2日 ICPC2019徐州 现场赛C <3 numbers 思维题

    问因数<3的数个数,是否小于给定区间1/3。因数<3除了1以外等价于素数。

    据说杜教筛改成求素数前缀和的版本可以暴力做,但是并不会。

    我们一个直观感受是,素数是越来越稀疏的,打表发现,50以外长度30以上,一定满足。而长度不到30的,用根号算法暴力判断每个元素即可。

    注意要以乘代除,或者起码除double......

     1 #include <cstdio>
     2 #include <cmath>
     3 using namespace std;
     4 int T,l,r;
     5 bool check(int x)
     6 {
     7     if (x == 1)
     8         return true;
     9     if (x == 2)
    10         return true;
    11     if (x == 3)
    12         return true;
    13     int t = sqrt(x);
    14     for (int i = 2;i <= t;i++)
    15         if (x % i == 0)
    16             return false;
    17     return true; 
    18 }
    19 int main()
    20 {
    21     for (scanf("%d",&T);T;T--)
    22     {
    23         scanf("%d%d",&l,&r);
    24         int cnt = 0;
    25         if (r - l <= 30 || r <= 50)
    26         {
    27             for (int i = l;i <= r;i++)
    28                 if (check(i))
    29                 {
    30                     cnt++;
    31                     if (3 * cnt >= r - l + 1)
    32                         break;
    33                 }
    34             if (3 * cnt >= r - l + 1)
    35                 printf("No
    ");
    36             else
    37                 printf("Yes
    ");
    38         }else
    39             printf("Yes
    ");
    40     }    
    41     return 0;
    42 }
  • 相关阅读:
    Msql-51CTO笔记
    Elasticsearch 学习第一天
    大数据开发参考资料
    1.docker的安装
    java_根据实体字段中的中文汉字排序
    遍历set集合,进行数据的拼接
    关于integer 和int
    03.linux环境安装mysql8的安装包
    02.linux下面安装jdk8
    01.VMware15.5下安装Centos7
  • 原文地址:https://www.cnblogs.com/iat14/p/12252859.html
Copyright © 2011-2022 走看看