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

Codeforces 546D Soldier and Number Game(数论)

时间:2017-02-15 22:04:06      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:前缀和   efi   nbsp   can   数论   ++   force   方法   ace   

类似筛素数的方法……求出前缀和。然后直接O(1)回答即可。

 

 1 #include <bits/stdc++.h>
 2 
 3 using namespace std;
 4 
 5 #define rep(i,a,b)              for(int i(a); i <= (b); ++i)
 6 
 7 const int N     =    10000000      +       10;
 8 
 9 int num[N];
10 bool p[N];
11 int T, n, m;
12 
13 int main(){
14 
15     memset(p, true, sizeof p);
16     memset(num, 0, sizeof num);
17 
18     p[1] = false;
19     rep(i, 2, N - 6) if (p[i]){
20         for (int j = i; j <= N; j += i){
21             int tmp = j;
22             while (tmp % i == 0){
23                 ++num[j];
24                 tmp /= i;
25             }
26             p[j] = false;
27         }
28     }
29     
30     rep(i, 2, N - 6) num[i] += num[i - 1];
31 
32     scanf("%d", &T);
33     while (T--){
34         scanf("%d%d", &n, &m);
35         printf("%d\n", num[n] - num[m]);
36     }
37 
38     return 0;
39 
40 }

 

Codeforces 546D Soldier and Number Game(数论)

标签:前缀和   efi   nbsp   can   数论   ++   force   方法   ace   

原文地址:http://www.cnblogs.com/cxhscst2/p/6403490.html

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