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 的一条单链中,胞嘧啶.腺嘧啶均 ...
随机推荐
- Bootstrap系列 -- 41. 带表单的导航条
有的导航条中会带有搜索表单,在Bootstrap框架中提供了一个“navbar-form”,使用方法很简单,在navbar容器中放置一个带有navbar-form类名的表单.navbar-left”让 ...
- [POJ2404]Jogging Trails(中国旅行商问题)(一般图的匹配——状压DP)
题目:http://poj.org/problem?id=2404 题意:有个n(n<=15)的点和m条无向边,每条边都有自己的权值.现在你要从某个点出发,每条边可以经过多次但要保证每条边至少走 ...
- SDN组网相关解决方案
http://www.muzixing.com/pages/2016/02/14/sdnzu-wang-xiang-guan-jie-jue-fang-an.html 2016-02-14 by mu ...
- 使用 Eclipse 调试 Java 程序的技巧
你应该看过一些如<关于调试的N件事>这类很流行的帖子 .假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方 ...
- 数据源DBCP一二
其实DBCP这个数据源实际上和com.alibaba.druid.pool.DruidDataSource 是差不多的
- linux基础-第十一单元 系统监控
第十一单元 系统监控 系统监视和进程控制工具-top和free top命令的功能 TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序 ...
- Java 关键字static final使用总结
Static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,被static修饰的成员变量和成员方法独立于该类的任何对象.也就是说,它不依赖类特定的实例,被 ...
- 【日常笔记】java文件下载返回数据流形式
@RequestMapping("/downloadFile") @ResponseBody public void download(String uploadPathUrl, ...
- 【转】向HTML中插入视频并兼容所有浏览器的方法
原文地址:http://www.jb51.net/web/168548.html 向HTML中插入视频有两种方法,一种是古老的object标签,一种是html5中的video标签,前者兼容性相对好些, ...
- 【CodeVS 1163】访问艺术馆
http://codevs.cn/submission/2367697/ loli蜜汁(面向高一)树形dp是这道题的改编. 改编后的题目中每个展览厅的有多个不同的画,偷画的时间和画的价值也不同,求最大 ...