【POJ 2635】 The Embarrassed Cryptographer
2015-08-19 21:47
253 查看
【POJ 2635】 The Embarrassed Cryptographer
考查素数表就好好玩素数表……卡mod算啥= =TOT 总之 就是敲个表 暴力枚举取余 一发十进制取余(即*10+%TLE……) 看disscuss才知道mod多了影响很大 改成高进制取(既多累几位再取) 985ms
刚才强加了别人的打表代码 跳了1400ms.。。吓死宝宝了 看来学的这种打法挺实用 呱唧呱唧
代码如下:
考查素数表就好好玩素数表……卡mod算啥= =TOT 总之 就是敲个表 暴力枚举取余 一发十进制取余(即*10+%TLE……) 看disscuss才知道mod多了影响很大 改成高进制取(既多累几位再取) 985ms
刚才强加了别人的打表代码 跳了1400ms.。。吓死宝宝了 看来学的这种打法挺实用 呱唧呱唧
代码如下:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; #define sz 1000000 #define ll long long bool IsPrim[sz+1]; int p[78500]; int tp; void Init() { memset(IsPrim,0,sizeof(IsPrim)); tp = 0; for(int i = 2; i <= sz; ++i) { if(!IsPrim[i]) p[tp++] = i; for(int j = 0; j < tp && p[j]*i <= sz; ++j) { IsPrim[p[j]*i] = 1; if(i%p[j]==0) break; } } } int main() { //freopen("../../../in.in","r",stdin); Init(); char k[112]; int l,t,i,j; unsigned ll ans; while(~scanf("%s %d",k,&l) && l) { for(i = 0; i < tp && p[i] < l; ++i) { ans = 0; for(j = 0; k[j];) { for(t = j;t-j <= 12 && k[t]; ++t)//测数据测出最多累积12位 longlong 最多11 ans = ans*10+(k[t]-'0'); ans %= p[i]; j = t; } if(!ans) break; } if(i == tp || p[i] >= l) puts("GOOD"); else printf("BAD %d\n",p[i]); } return 0; }
相关文章推荐
- R语言可视化
- java中的Lamda语句
- PostgreSQL Replication之第五章 设置同步复制(1)
- PHP单例模式
- HDU-1301 Jungle Roads(最小生成树[Prim])
- SQLite学习笔记(2)-SQLite语法
- 转 source insight 复制后光标在前面
- java 线程池用法
- UIWebView中弹出UIPopoverController
- UVa 12505 Searching in sqrt(n)
- 素数对猜想
- 排序算法之堆排序
- PostgreSQL Replication之第四章 设置异步复制(8)
- sublimeText注册
- Linux环境进程间通信(五): 共享内存(上)
- HDOJ 2084 数塔 【dp】
- HDOJ 2084 数塔 【dp】
- 关于c++派生类构造函数的思考
- 2016 360笔试题------找第一个只出现一次的字符
- Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签