47分蒟蒻在线求助QWQ

P1865 A % B Problem

@[xyx0202](/user/973958) az,这也太暴力了吧。
by Still_Alive_ @ 2023-08-23 11:41:28


@[xyx0202](/user/973958) 你会欧拉筛么?
by Still_Alive_ @ 2023-08-23 11:42:24


@[xyx0202](/user/973958) 你可以先用欧拉筛把1~$10^6$的素数都筛出来,然后再用前缀和做。
by Still_Alive_ @ 2023-08-23 11:44:34


@[Still_Alive_](/user/1062742) **OK** **我**~~逝世~~**试试**
by xyx0202 @ 2023-08-23 11:52:09


@[Still_Alive_](/user/1062742) **先去吃饭(** **~~麻了~~**
by xyx0202 @ 2023-08-23 11:54:50


@[xyx0202](/user/973958) 在你的`bool prime`里,i其实有可能等于一 所以加个特判吧。 还有TLE的话,把输入输出改成scanf和printf试试? 如果有帮助的话,就……祝你AC愉快!(笑脸
by RKYSSS @ 2023-08-23 11:57:09


@[RKYSSS](/user/1061404) **谢谢祝福**~~(bushi)~~
by xyx0202 @ 2023-08-23 11:59:28


其实你可以用用[这个](https://baike.baidu.com/item/%E5%9F%83%E6%8B%89%E6%89%98%E6%96%AF%E7%89%B9%E5%B0%BC%E7%AD%9B%E6%B3%95/374984?fr=ge_ala), 应该是能百分百AC的嫩
by RKYSSS @ 2023-08-23 12:09:10


@[RKYSSS](/user/1061404) **用原方法做的,加了特判,改了输入方式** **现在只报三个时间~~充裕~~了** **看来只能换方法力**~~QWQ~~
by xyx0202 @ 2023-08-23 19:15:33


```cpp #include<iostream> #include<cstdio> #include<cstring> using namespace std; int p[2000000000]; long long l,r; int n,m; int ipnum(long long l,long long r); int main(){ scanf("%d%d",&n,&m); for(int i=0;i<n;i++){ scanf("%lld%lld",&l,&r); if(r>m||l<1){ printf("Crossing the line\n"); continue; } printf("%d\n",ipnum(l,r)); } return 0; } int ipnum(long long l,long long r){ int tot,cn; memset(p,0,sizeof(p)); for(int i=0;i<=r;i++){ p[i]=1; } for(int i=l+1;i<=n;i++){ if(p[i]==1) tot++; cn=i*2; while(cn<=n){ p[cn]=0; cn+=i; } } return tot; } ``` **各位大佬,换了一个思路,样例没问题,可是为什么编译错误啊!QAQ** ~~思路是2014年普及组看程序写结果第四问提供的~~ **离大谱**
by xyx0202 @ 2023-08-23 19:35:05


| 下一页