POJ2635The Embarrassed Cryptographer(大数取余+素数筛选+好题)
题意:K是由两个素数乘积,如果最小的素数小于L,输出BAD最小的素数,否则输出GOOD
分析 素数打表将 L 大点的素数打出来,一定要比L大,然后就开始枚举,只需K对 素数 取余 看看是否为零,但是 k 是一个很大的数,怎么存储又是一个问题,很好的一个解决方案:用千进制来表示 :加入是 1234567890 表示成 【890】【567】【234】【1】这样存储,如果是十进制对 k 取余,那么就是 从最高位开始 加上 上步*10再取余,放在这里就是*1000
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <cmath>
using namespace std;
const int Max = + ;
int primer[Max + ], flag[Max + ], tot;
char str[ + ];
int Kt[], L;
void get_primer()
{
tot = ;
memset(flag, , sizeof(flag));
for(int i = ; i <= Max; i++)
{
if(flag[i] == )
{
primer[tot++] = i;
for(int j = i; j <= Max / i; j++)
flag[i * j] = ;
}
}
}
void PrimeTable(void)
{
tot=;
primer[tot++]=; for(int i=;i<=Max;i+=) //奇偶法
{
bool flaga=true;
for(int j=;primer[j]*primer[j]<=i;j++) //根号法+递归法
if(!(i%primer[j]))
{
flaga=false;
break;
}
if(flaga)
primer[tot++]=i;
}
return;
} int Pow(int x, int y)
{
int ans = ;
while(y--)
ans *= x;
return ans;
}
int mod(int a[], int key, int lenkt) //大数取余
{
int ans = ;
for(int i = lenkt - ; i >= ; i--)
{
ans = (ans * + a[i]) % key;
}
return ans;
}
int main(int argc, char** argv)
{
get_primer();
while(scanf("%s%d", str, &L) != EOF)
{
if(strcmp(str,"") == && L == )
break;
memset(Kt, , sizeof(Kt));
int len = strlen(str);
int lenkt = ;
for(int i = len - ; i >= ; i -= )
{
int t = i, cnt = ;
while(cnt < && t >= )
{
Kt[lenkt] += (str[t] - '') * Pow(, cnt); // pow函数是double,会不准,找了天错
cnt++;
t--;
}
lenkt++;
}
int have_find = false;
for(int i = ; primer[i] < L; i++)
{
if(mod(Kt, primer[i], lenkt) == )
{
have_find = true;
printf("BAD %d\n", primer[i]);
break;
}
}
if(have_find == false)
printf("GOOD\n");
}
return ;
}
POJ2635The Embarrassed Cryptographer(大数取余+素数筛选+好题)的更多相关文章
- POJ2635-The Embarrassed Cryptographer 大数求余
题目链接:http://poj.org/problem?id=2635 题目分析: http://blog.csdn.net/lyy289065406/article/details/6648530
- (POJ2635)The Embarrassed Cryptographer(大数取模)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13041 Accep ...
- poj2635The Embarrassed Cryptographer(同余膜定理)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15069 A ...
- [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11978 A ...
- 1214 - Large Division -- LightOj(大数取余)
http://lightoj.com/volume_showproblem.php?problem=1214 这就是一道简单的大数取余. 还想还用到了同余定理: 所谓的同余,顾名思义,就是许多的数被一 ...
- java大数取余
java大数取余: 类方法:BigInteger.divideAndRemainder() 返回一个数组,key = 0为商key = 1为余数 import java.util.*; import ...
- hdu 1226 bfs+余数判重+大数取余
题目: 超级密码 Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)
题目链接 C. Hacking Cyphertime limit per test1 secondmemory limit per test256 megabytesinputstandard inp ...
- 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)
阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K 目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...
随机推荐
- JVM内存管理------GC算法精解(复制算法与标记/整理算法)
本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...
- 又发现一个msdn的坑
一个类型里面有两个属性仅仅是大小写区别,可是IIS不区分大小写,问:如何才能查看两个属性里面的文档那? http://msdn.microsoft.com/en-us/library/microsof ...
- 准标识符(Quasi-dientifier, QI)
Quasi-identifier From Wikipedia, the free encyclopedia Quasi-identifiers are pieces of information t ...
- MongoDB数据库GroupBy查询使用Spring-data-mongondb的实现
以前用MongoDB数据库都是简单的查询,直接用Query就可以,最近项目中用到了分组查询,完全不一样.第一次遇到,搞了好几天终于有点那意思了. 先上代码: import java.math.BigD ...
- android开机自启动广播
权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> &l ...
- 【BZOJ 1014】【JSOI 2008】火星人prefix
看了<Hash在信息学竞赛中的一类应用>中的例题3,这道题很类似啊,只不过没有删点和区间翻转. 用Splay维护字符串哈希,加点改点什么的就不用说了,查询时二分答案,这样时间复杂度是$O( ...
- 【POJ 3294】Life Forms 不小于k个字符串中的最长子串
一下午和一晚上都在刚这道题,各种错误都集齐了so sad 我的时间啊!!! 后缀数组就先做到这里吧,是在伤不起啊QAQ 出现了各种奇怪的错误,看了标算,然后乱改自己的代码,莫名其妙的改A了,后来发现用 ...
- mysql之路【第三篇】
1,查看表的结构 desc 表名; 查看表的详细结构 show create table; show create table \G; (加上G格式化输出), 2,修改表 2. ...
- ES6新特性:Function函数扩展, 扩展到看不懂
本文所有Demo的运行环境为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : 函数的默认值: 如果有参数 ,那就用参数, 如果没有参数, 那就用默认的参数: aj ...
- Android中处理崩溃异常CrashHandler
来源:http://blog.csdn.net/liuhe688/article/details/6584143 大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程 ...