2020年2月2日 ICPC2019徐州 现场赛C <3 numbers 思维题

Posted iat14

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

 

以上是关于2020年2月2日 ICPC2019徐州 现场赛C <3 numbers 思维题的主要内容,如果未能解决你的问题,请参考以下文章

2019icpc-徐州网络赛

2019ICPC徐州区域赛 Kill the tree

2018 ICPC 徐州网络赛

ICPC 2018 徐州赛区网络赛

2019ICPC徐州站M题

周记 - 2019年11月03日