码迷,mamicode.com
首页 > 其他好文 > 详细

hdu--5317--RGCDQ(有点递归的感觉)

时间:2015-07-28 22:46:55      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5317

 

感觉好神奇呀,一堆数在一起可以找到规律,学长讲完后,觉得自己是如此的so young

f[x]不超过7的

 

技术分享

技术分享

代码:

 1 #include<algorithm>
 2 #include<stdio.h>
 3 #include<stack>
 4 #include<string.h>
 5 using namespace std;
 6 
 7 #define lson r<<1
 8 #define rson r<<1|1
 9 
10 const int maxn = 1e6+1;
11 int p[maxn], f[maxn][8];
12 
13 void Prime()
14 {
15     int i, j;
16 
17     for(i=2; i<maxn; i++)
18     {
19         if(p[i] == 0)
20         {
21             for(j=i; j<maxn; j+=i)
22                 p[j]++;
23         }
24     }
25 
26     for(i=2; i<maxn; i++)
27     {
28         f[i][p[i]] = 1;
29         for(j=1; j<8; j++)
30         {
31             f[i][j] += f[i-1][j];
32         }
33     }
34 }
35 
36 
37 int main()
38 {
39     int T;
40 
41     Prime();
42 
43     scanf("%d", &T);
44 
45     while(T--)
46     {
47         int u, v;
48 
49         scanf("%d%d", &u, &v);
50 
51         if(f[v][7] - f[u-1][7] >= 2)
52             printf("7\n");
53         else if(f[v][6] - f[u-1][6] >= 2)
54             printf("6\n");
55         else if(f[v][5] - f[u-1][5] >= 2)
56             printf("5\n");
57         else if(f[v][4] - f[u-1][4] >= 2)
58             printf("4\n");
59         else if( (f[v][3] - f[u-1][3] >= 2) || (f[v][6]-f[u-1][6]>=1 && f[v][3]-f[u-1][3]>=1) )
60             printf("3\n");
61         else if( (f[v][2] - f[u-1][2] >= 2) || (f[v][6]-f[u-1][6]>=1 && f[v][2]-f[u-1][2]>=1) )
62             printf("2\n");
63         else
64             printf("1\n");
65     }
66 
67     return 0;
68 }

 

hdu--5317--RGCDQ(有点递归的感觉)

标签:

原文地址:http://www.cnblogs.com/YY56/p/4684282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!