题目背景
题目名称是吸引你点进来的
实际上该题还是很水的
题目描述
区间质数个数
输入输出格式
输入格式:
一行两个整数 询问次数n,范围m
接下来n行,每行两个整数 l,r 表示区间
输出格式:
对于每次询问输出个数 t,如l或r∉[1,m]输出 Crossing the line
输入输出样例
输入样例#1:
2 51 32 6
输出样例#1:
2Crossing 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
直接循环,判断,,
会t,
然后要注意负数。
正解思路像贪心。。
代码:
#include#include #include #include #include using namespace std;int n,m,l,r;int f[1000002];bool judge(int x){ if(x<=1) return 0; for(int i=2;i*i<=x;++i) if(x%i==0) return 0; return 1;}int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;++i) { if(judge(i)) f[i]=f[i-1]+1; else f[i]=f[i-1]; } for(int i=1;i<=n;++i) { scanf("%d%d",&l,&r); if(l<=0||l>m||r<=0||r>m) printf("Crossing the line\n"); else printf("%d\n",f[r]-f[l-1]); } return 0;}
如果你不开心,那我就把右边这个帅傻子分享给你吧,
你看,他这么好看,那么深情的望着你,你还伤心吗?
真的!这照片盯上他五秒钟就想笑了。
一切都会过去的。