题意:给出一个大数,这个大数由两个素数相乘得到,让我们判断是否其中一个素数比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. (转载)app ico图标字体制作

    图标字体化浅谈   在做手机端Web App项目中,经常会遇到小图标在手机上显示比较模糊的问题,经过实践发现了一种比较好的解决方案,图标字体化.在微社区项目中,有很多小的Icon(图标),如分享.回复 ...

  2. NOIP2011-普及组复赛模拟试题-第一题-NBA总冠军

    题目背景 Background 一年两度的期末考要到来了!!  题目描述 Description   又要到考试了,Ljw决定放松一下,就打开电视,看见了篮球赛,他立即想到了每年的NBA总冠军队伍.由 ...

  3. juniper防护墙接口的NAT和ROUTE模式如何选择问题

    juniper防护墙一般是把trust接口部署为NAT模式,untrust接口部署为route模式.这样当来自内部的数据访问Utrust区域时,会把源地址翻译成untrust接口的地址.从而达到隐藏内 ...

  4. SQL STUFF函数 拼接字符串

    今日看到一篇文章,是关于和并列的,也研究了下,还是不错的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1 ...

  5. Linux下wps字体问题

    1.安装symbol-fonts_1.2_all.deb,自行搜索 2.卸载xfonts-mathml字体 sudo apt-get remove xfonts-mathml

  6. iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变

    可以选择是使用自定制的还是系统的,如果使用自定制的,就使用以下方法即可隐藏系统的uitabbarButton,从而使item恢复正确 //隐藏UITabBarButton -(void)viewWil ...

  7. Internet History, Technology and Security (Week1)

    Week1. History: Dawn of Electronic Computing War Time Computing and Conmmunication Keywords: Electro ...

  8. 第三十九节,python内置全局变量

    vars()查看内置全局变量 以字典方式返回内置全局变量 #!/usr/bin/env python # -*- coding:utf8 -*- print(vars()) #输出 # {'__bui ...

  9. iOS:UIWebView scrollView 的分页滑动问题

    最近在弄一个native webview+html的项目,感觉这种尝试还是挺不错的,特被是适合内容类app.如杂志.电子书等.其实native搭的就是一个框架,主体还是在html的内容上,所以花在ht ...

  10. H5调用本地摄像头

    <!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"& ...