题目链接

题意: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(大数取余+素数筛选+好题)的更多相关文章

  1. POJ2635-The Embarrassed Cryptographer 大数求余

    题目链接:http://poj.org/problem?id=2635 题目分析: http://blog.csdn.net/lyy289065406/article/details/6648530

  2. (POJ2635)The Embarrassed Cryptographer(大数取模)

    The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13041 Accep ...

  3. poj2635The Embarrassed Cryptographer(同余膜定理)

    The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 15069   A ...

  4. [ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)

    The Embarrassed Cryptographer Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11978   A ...

  5. 1214 - Large Division -- LightOj(大数取余)

    http://lightoj.com/volume_showproblem.php?problem=1214 这就是一道简单的大数取余. 还想还用到了同余定理: 所谓的同余,顾名思义,就是许多的数被一 ...

  6. java大数取余

    java大数取余: 类方法:BigInteger.divideAndRemainder() 返回一个数组,key = 0为商key = 1为余数 import java.util.*; import ...

  7. hdu 1226 bfs+余数判重+大数取余

    题目: 超级密码 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  8. Codeforces Round #279 (Div. 2) C. Hacking Cypher (大数取余)

    题目链接 C. Hacking Cyphertime limit per test1 secondmemory limit per test256 megabytesinputstandard inp ...

  9. 2019计蒜之道初赛3 D. 阿里巴巴协助征战SARS(困难)(大数取余+欧拉降幂)

    阿里巴巴协助征战SARS(困难) 33.29% 1000ms 262144K   目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均 ...

随机推荐

  1. Scala入门之Array

    /** * 大数据技术是数据的集合以及对数据集合的操作技术的统称,具体来说: * 1,数据集合:会涉及数据的搜集.存储等,搜集会有很多技术,存储现在比较经典的是使用Hadoop,也有很多情况使用Kaf ...

  2. isinstance

    class Foo: pass obj = Foo() isinstance(obj,Foo) class Foo: pass obj = Foo() isinstance(obj ,Foo) pri ...

  3. 顺序队列C/C++实现

    #include <iostream> using namespace std; const int MAXSIZE = 1000; typedef int ELEMTYPE; const ...

  4. confluence的安装、备份和恢复(wiki)

    还有一种比较不错的wiki工具MediaWiki 安装教程参考 http://pangge.blog.51cto.com/6013757/1560249 我是按照上面的教程搭建的 还有几篇不错的文章 ...

  5. inline-block 左边固定,右边自适应

    <body> <div class="col-md-4 left"> <div class="logo">默沙东盲讲< ...

  6. css 选择器样式优先级

    !important > 行内 >id > class >tag >*

  7. js-设置焦点

    function CheckForm() { if(document.form1.trainingName.value==""){ alert("培训班名称不能为空!&q ...

  8. 算法与数据结构之选择排序(C语言)

    #include<stdio.h> #include<stdlib.h> void SelectSort(int *a,int n);//预声明要调用的函数 int main( ...

  9. IOS传值的几种方式

    1.代理 一对一 在第二个页面设置代理 1.1在最上方设置 //选择房间的代理 @protocol RoomVCDelegate <NSObject> 1.2设置代理方法 //方法 -(v ...

  10. springmvc使用RSA算法加密表单

    今天被吐槽在客户端用js对密码进行md5加密其实也不见得安全.这种做法其实不见得有什么作用,学过计算机网络都知道,在网上抓一个包是很简单的事,就算别人抓包抓不到你原始密码,用这个md5后的密码一样可以 ...