题目链接:https://vjudge.net/problem/POJ-2635

题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L。

题解:因为大数M已经超过long long 范围,那么我们就需要进行大数分解由十进制转换为1000进制,然后只要从2-L遍历一遍。

代码详情:

 1 #include<iostream>
2 #include<algorithm>
3 #include<vector>
4 #include<cstring>
5 #include<cstdio>
6 #include<queue>
7 using namespace std;
8 #define mem(s,n) memset(s,n,sizeof s);
9 typedef long long ll;
10 const int maxn=2e6+100;
11 const int Inf=0x7f7f7f7f;
12 bool isprime[maxn];
13 int prime[maxn];
14 int cnt;
15 // 欧拉筛打表素数表;
16 void judge()
17 {
18 mem(isprime,1);
19 cnt=0;
20 isprime[1]=0;
21 for(int i=2;i<maxn;i++)
22 {
23 if(isprime[i]==1)
24 prime[cnt++]=i;
25 for(int j=0;j<cnt&&(i*prime[j])<maxn;j++)
26 {
27 isprime[i*prime[j]]=0;
28 if(i%prime[j]==0)
29 {
30 break;
31 }
32 }
33 }
34 }
35 int main()
36 {
37 char s[1005];
38 int n,k;
39 judge();
40 while(scanf("%s%d",s,&n)&&(s[0]!='0'&&n!=0))
41 {
42 int len=strlen(s);
43 for( k=2;k<n;k++)
44 {
45 if(isprime[k]==0) continue;
46 int num=0;
47 //大数分解;
48 for(int i=0;i<len;i+=3)
49 {
50 int t=0,ks=1;
51 for(int j=i;j<i+3&&j<len;j++) //转化为1000进制;
52 {
53 ks*=10;
54 t=t*10+s[j]-'0';
55 }
56 num=num*ks+t;
57 num%=k;
58 }
59 //关键;
60 if(num==0)
61 {
62 printf("BAD %d\n",k);
63 break;
64 }
65 }
66 if(k==n) puts("GOOD");
67 }
68 return 0;
69 }

最新文章

  1. Asp.Net Web API 2第五课——Web API路由
  2. hdoj 1729 Stone Games(SG函数)
  3. vb.net中的SqlHelper
  4. javaweb学习总结二十四(servlet经常用到的对象)
  5. python 错误处理
  6. android AsyncTask 详细例子
  7. Web性能优化工具WebPageTest(三)——本地部署(Windows 7版本)
  8. nmon进行性能分析
  9. WebService(1-1)webservice调用
  10. php中一些提高性能的技巧
  11. JeecgBoot版本4月份新版即将发布,抢先体验。。
  12. VMware 中安装虚拟机和宿主机通信
  13. Java access to the Domino Objects, Part 1
  14. 【Linux】通过SSH修改调整Linux时间和时区
  15. C++ 顺序表实现
  16. CentOS 启动-运行级别
  17. Windows API 编程----将错误代码转换成错误描述信息
  18. 基于Mysql-Proxy实现Mysql的主从复制以及读写分离(下)
  19. Walls and Gates -- LeetCode
  20. 最小生成树(prim和kruskal)

热门文章

  1. Sentry React SourceMaps All In One
  2. Emacs和Vim:神的编辑器和编辑器之神, 到底哪个更好?
  3. js 快速排序 All In One
  4. YouTube 视频下载工具
  5. webpack &amp; chunkhash
  6. js replace all &amp; replaceAll
  7. c++ x86_x64挂钩函数 传递寄存器表
  8. 星盟全球投资副总裁DENIEL SOIBIM:如何激发创造力
  9. mysql一张表到底能存多少数据?
  10. js 一元运算符