标签:ssi 输入输出格式 tar blank ++ 接下来 背景 oss col
题目戳
题目名称是吸引你点进来的
实际上该题还是很水的
区间质数个数
输入格式:
一行两个整数 询问次数n,范围m
接下来n行,每行两个整数 l,r 表示区间
输出格式:
对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line
【数据范围和约定】
对于20%的数据 1<=n<=10 1<=m<=10
对于100%的数据 1<=n<=1000 1<=m<=1000000 -10^9<=l<=r<=10^9 1<=t<=1000000
炒鸡大水题。注意到m范围1000000,需要询问某个区间内的质数个数,直接可以联想到前缀和,很自然的想到线性筛预处理出质数,然后就OK了。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int T,m,num,sum[1000005]; 4 bool a[1000005]; 5 int main() 6 { 7 scanf("%d%d",&T,&m); 8 for(register int i=2;i<=m;i++) 9 { 10 if(a[i]==0) 11 { 12 sum[i]=sum[i-1]+1; 13 for(register int j=i;j<=m;j+=i)a[j]=1; 14 } 15 else sum[i]=sum[i-1]; 16 } 17 while(T--) 18 { 19 int x,y; 20 scanf("%d%d",&x,&y); 21 if(y>m||y<1||x<1) printf("Crossing the line\n"); 22 else 23 { 24 printf("%d\n",sum[y]-sum[x-1]); 25 } 26 } 27 return 0; 28 }
标签:ssi 输入输出格式 tar blank ++ 接下来 背景 oss col
原文地址:http://www.cnblogs.com/five20/p/7862132.html