poj 2635 The Embarrassed Cryptographer(同余模运算)
2016-05-31 14:59
357 查看
http://poj.org/problem?id=2635
题意:给出一个大数K和一个数L,判断是否存在一个小于L的素数能够整除K,存在的话输出最小的那个素数
同余定理:1234%3可以分解为
1%3=1
(1*10+2)%3=0
(0*10+3)%3=0
(0*10+4)%3=1
则1234对3取余得1,大数亦如此,但是本题中需要将这个大数分为多个1000进制的数,10进制的话会TLE
题意:给出一个大数K和一个数L,判断是否存在一个小于L的素数能够整除K,存在的话输出最小的那个素数
同余定理:1234%3可以分解为
1%3=1
(1*10+2)%3=0
(0*10+3)%3=0
(0*10+4)%3=1
则1234对3取余得1,大数亦如此,但是本题中需要将这个大数分为多个1000进制的数,10进制的话会TLE
#include <iostream> #include <queue> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <cstdlib> #include <limits> #include <stack> #include <vector> #include <map> using namespace std; #define N 1000200 #define INF 0xfffffff #define PI acos (-1.0) #define EPS 1e-8 #define met(a, b) memset (a, b, sizeof (a)) typedef long long LL; int isprim = {1, 1}, prim , a , k = 0; void Init () { for (int i=2; i<N; i++) { if (!isprim[i]) { prim[k++] = i; for (int j=i+i; j<N; j+=i) isprim[j] = 1; } } } int main () { char str ; int m; Init(); while (scanf ("%s %d", str, &m), strcmp("0", str) || m) { met (a, 0); int cnt = 0, len = strlen(str); int i = len-1; while (i>=0) {///将字符串中的数以1000进制的形式倒着存入a数组中 ///1 234 567存为a[567][234][1] if (i-2>=0) { a[cnt] = (str[i-2]-'0')*100+(str[i-1]-'0')*10+str[i]-'0'; i -= 3; } else if (i-1>=0) { a[cnt] = (str[i-1]-'0')*10+str[i]-'0'; i -= 2; } else a[cnt] = str[i--]-'0'; cnt++; } int flag = 0; for (i=0; i<k; i++) { if (prim[i] >= m) break; LL mod = 0; for (int j=cnt-1; j>=0; j--) mod = (mod * 1000 + a[j]) % prim[i]; if (!mod) { printf ("BAD %d\n", prim[i]); flag = 1; break; } } if (!flag) puts ("GOOD"); } return 0; }
相关文章推荐
- Bootstrap后台开发模板整理
- 自定义Notification模拟数据下载状态栏的提示
- ASP.NET MVC企业级项目框架搭建实战
- (Java)LeetCode-21. Merge Two Sorted Lists
- linux 用户授权
- MIT6.828 HW6: Threads and Locking
- android的versionCode与versionName的区别
- JavaScript table, grid, tree view or Gantt chart | TreeGrid
- android中src和background区别
- UI手势
- js 数组常用方法总结
- Light OJ - 1008 - Fibsieve`s Fantabulous Birthday(数学,找规律)
- 服务器上测试flask rest-api
- shell中的括号与引号
- 设计模式--Builder
- dom4j解析xml文件
- 7. xdebug
- Animation & Animator使用方法(Mooc Android加薪利器--自定义view 代码学习笔记)
- java spring hibernate
- gettid 和pthread_self的区别