题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比L要小,如果两个都小,输出较小的那个。

  分析:大数求余的方法:针对题目中的样例,143 11,我们可以这样算,1 % 11 = 1;      1×10 + 4 % 11 = 3;      3×10 + 3 % 11 = 0;我们可以把大数拆成小数去计算,同余膜定理保证了这个算法的这正确性,而且我们将进制进行一定的扩大也是正确的。

  注意:素数打标需要优化,否则超时。   进制需要适当,100和1000都可以,10进制超时,10000以上WA(不知道为什么……)。   把进制扩大以后,数据必须从后向前存,从前向后存的不是原数。

  总结:这个题目卡时间卡的特别紧;

  

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
#define maxn 1000010
#define jz 1000
int prime[maxn],tot,List[maxn];
void make_prime()
{
for(int i = ; i <= maxn-; i++)
{
prime[i] = ;
}
prime[] = prime[] = ;
int d = sqrt((double)maxn) + ;
for(int i = ; i <= maxn-; i++)
{
if(!prime[i]) continue;
List[tot++] = i;
if(i > d) continue;
for(int j = *i; j <= maxn-; j += i)
{
prime[j] = ;
}
}
}
int mypow(int x,int y)
{
int sum = ;
for(int i = ; i <= y; i++)
sum *= x;
return sum;
}
int main()
{
tot = ;
make_prime();
char str[];
int l,lens,a[],ans,num,jw,cnt,number,tot1;
while(~scanf("%s%d",str,&l))
{
if(str[] == '' && l == ) break;
lens = strlen(str);
cnt = ;
number = ;
tot1 = ;
for(int i = lens-; i >= ; i--)
{
num = str[i] - '';
number += num * mypow(,cnt);
// printf("number = %d\n",number);
cnt++;
if(cnt == )
{
cnt = ;
a[tot1++] = number;
number = ;
}
}
if(number) a[tot1++] = number;
bool flag = true;
for(int i = ; i < tot; i++)
{
jw = ;
num = List[i];
if(num >= l) break;
for(int j = tot1-; j >= ; j--)
{
jw = (jw*jz + a[j]) % num;
}
if(jw == )
{
flag = false;
ans = num;
break;
}
}
if(flag)
{
puts("GOOD");
}
else printf("BAD %d\n",ans);
memset(a,,sizeof(a));
memset(str,,sizeof(str));
}
return ;
}

POJ 2635 The Embarrassed Cryptographer(大数求余)的更多相关文章

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

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

  2. POJ 2635 The Embarrassed Cryptographer 大数模

    题目: http://poj.org/problem?id=2635 利用同余模定理大数拆分取模,但是耗时,需要转化为高进制,这样位数少,循环少,这里转化为1000进制的,如果转化为10000进制,需 ...

  3. POJ2635-The Embarrassed Cryptographer 大数求余

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

  4. POJ 2635 The Embarrassed Cryptographer (千进制,素数筛,同余定理)

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

  5. POJ - 2635 The Embarrassed Cryptographer(千进制+同余模)

    http://poj.org/problem?id=2635 题意 给一个大数K,K一定为两个素数的乘积.现给出一个L,若K的两个因子有小于L的,就输出BAD,并输出较小的因子.否则输出GOOD 分析 ...

  6. POJ 2635 The Embarrassed Cryptographer

    大数取MOD... The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 1 ...

  7. poj 2635 The Embarrassed Cryptographer(数论)

    题目:http://poj.org/problem?id=2635 高精度求模  同余模定理. 题意: 给定一个大数K,K是两个大素数的乘积的值.再给定一个int内的数L 问这两个大素数中最小的一个是 ...

  8. POJ 2635 The Embarrassed Cryptographer 高精度

    题目地址: http://poj.org/problem?id=2635 题意:给出一个n和L,一直n一定可以分解成两个素数相乘. 让你判断,如果这两个素数都大于等于L,则输出GOOD,否则输出最小的 ...

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

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

随机推荐

  1. hdu 1028 Ignatius and the Princess III(母函数入门+模板)

    Description "Well, it seems the first problem is too easy. I will let you know how foolish you ...

  2. NOIP2012-普及组复赛-第一题-质因数分解

    题目描述 Description 已知正整数n是两个不同的质数的乘积,试求出两者中较大的那个质数.  输入输出格式 Input/output 输入格式:输入只有一行,包含一个正整数n.输出格式:输出只 ...

  3. java.util.Iterator

    public interface Iterator<E>: 对 collection 进行迭代的迭代器. 方法摘要: boolean hasNext() 如果仍有元素可以迭代,则返回 tr ...

  4. javascript中onSubmit="return xxx()"的问题

    javascript中onSubmit="return xxx()"刚开始我是想不通为什么要加return在里面呢,后来想想onSubmit="flase"就不 ...

  5. 关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting server-side response timeout by scan timer.

    简单来说就是dubbo超时,因为dubbo默认的时间是500ms,超过这个时间它会重新访问service层,最多尝试三次. 所以我在测试的时候日志显示出来的异常为……timeout……. 开始设置开始 ...

  6. awk中{print $1}什么意思

    给你举个例子,echo "aa bb cc" | awk -F '{print $1}' 结果就是aa,意思是把字符串按空格分割,取第一个,自己做个测试就明白了!awk是用来提取列 ...

  7. The server instance Witness rejected configure request; read its error log file for more information. The reason 1427, and state 31, can be of use for

    数据库服务器做了镜像之后,发现有错误信息 The server instance Witness rejected configure request; read its error log file ...

  8. angular项目——小小记事本2

    一,路由的规划. 需要模拟的页面有三个:all,active,conplete. 首先,写好铺垫需要的各种东西,重要的组件的引用等—— 这里我们会将index.html设为主页,将body.html加 ...

  9. mysql无法启动,一直处于启动状态解决【Mac osx 】

    最近,遇到一个问题,就是mac 使用homebrew 安装了mysql,今天使用mysql.server start,mysql无法启动了,restart还找不到pid,说明服务并没有启动! 错误如下 ...

  10. CSS3秘笈:第九章

    1.链接状态:大部分浏览器支持4中基本的链接状态:未访问的链接.已访问的链接.访问者的鼠标正悬停在上方的链接.正被单击的链接.这些状态的4个对应伪类选择器分别是:link.:visited.:hove ...