P1865 A % B Problem
题目背景
题目名称是吸引你点进来的
实际上该题还是很水的
题目描述
区间质数个数
输入输出格式
输入格式:
一行两个整数 询问次数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
直接循环,判断,,
会t,
然后要注意负数。
正解思路像贪心。。
代码:
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> 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; }
如果你不开心,那我就把右边这个帅傻子分享给你吧,
你看,他这么好看,那么深情的望着你,你还伤心吗?
真的!这照片盯上他五秒钟就想笑了。
一切都会过去的。