poj2635(千进制取模+同余模定理)
题目链接:https://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html
题意:给出大数s (s<=10100) ,L (<=106),s是两个素数的乘积,求其最小因子即这两个素数中较小者是否小于L。
思路:先通过欧筛法打表计算出106以内的素数,大概有8e4个。然后用千进制表示s,如将12345678表示成[012][345][678],用整型数组Kt表示,前面补0,这样做之后利用同余模定理计算Kt对x的模。如计算[012][345][678]%10,记模为M,则M=0, M=12%10=2, M=(2*1000+345)%10=5, M=(5*1000+678)%10=8。然后主要思路就是从小遍历打表得出的素数表,寻找是否存在能整除Kt的素数。用千进制的原因是为了降低复杂度,据说用百进制会T,万进制会wa(可能计算过程会超int)。
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
using namespace std; const int maxn=;
int prime[maxn],vis[maxn],cnt,L,len1,len2,Kt[];
string s; void get_prime(){
memset(vis,,sizeof(vis));
for(int i=;i<=;++i){
if(vis[i]) prime[cnt++]=i;
for(int j=;j<cnt&&i*prime[j]<=;++j){
vis[i*prime[j]]=;
if(i%prime[j]==) break;
}
}
} bool Mod(int x){
int M=;
for(int i=;i<len2;++i)
M=(M*+Kt[i])%x;
return M==?true:false;
} int main(){
get_prime();
while(cin>>s>>L,(s[]!='')||L){
len1=s.length();
if(len1%==) s=""+s;
else if(len1%==) s=""+s;
len1=s.length();
len2=len1/;
for(int i=;i<len2;++i)
Kt[i]=(s[*i]-'')*+(s[*i+]-'')*+(s[*i+]-'');
bool flag=true;
int p=;
while(p<cnt&&prime[p]<L){
if(Mod(prime[p])){
flag=false;
printf("BAD %d\n",prime[p]);
break;
}
++p;
}
if(flag)
printf("GOOD\n");
}
return ;
}
poj2635(千进制取模+同余模定理)的更多相关文章
- 【阔别许久的博】【我要开始攻数学和几何啦】【高精度取模+同余模定理,*】POJ 2365 The Embarrassed Cryptographer
题意:给出一大数K(4 <= K <= 10^100)与一整数L(2 <= L <= 106),K为两个素数的乘积(The cryptographic keys are cre ...
- The Embarrassed Cryptographer(高精度取模+同余模定理)
Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 11435 Accepted: 3040 Description The ...
- poj 2635 千进制
转自:http://www.cnblogs.com/kuangbin/archive/2012/04/01/2429463.html 大致题意: 给定一个大数K,K是两个大素数的乘积的值. 再给定一个 ...
- POJ - 2635 The Embarrassed Cryptographer(千进制+同余模)
http://poj.org/problem?id=2635 题意 给一个大数K,K一定为两个素数的乘积.现给出一个L,若K的两个因子有小于L的,就输出BAD,并输出较小的因子.否则输出GOOD 分析 ...
- POJ 2635 The Embarrassed Cryptographer (千进制,素数筛,同余定理)
The Embarrassed Cryptographer Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 15767 A ...
- POJ - 1426 暴力枚举+同余模定理 [kuangbin带你飞]专题一
完全想不到啊,同余模定理没学过啊,想起上学期期末考试我问好多同学'≡'这个符号什么意思,都说不知道,你们不是上了离散可的吗?不过看了别人的解法我现在会了,同余模定理介绍及运用点这里点击打开链接 简单说 ...
- POJ 1426 Find The Multiple && 51nod 1109 01组成的N的倍数 (BFS + 同余模定理)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21436 Accepted: 877 ...
- poj 1426 Find The Multiple ( BFS+同余模定理)
Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 18390 Accepted: 744 ...
- 同余模定理 HDOJ 5373 The shortest problem
题目传送门 /* 题意:题目讲的很清楚:When n=123 and t=3 then we can get 123->1236->123612->12361215.要求t次操作后, ...
随机推荐
- ssm学习的第一个demo---crm(4)
(1)在crm系统中点击修改弹出了修改的框,这个使用bootstrap做的,然后看jsp代码,找到 用editCustomer,按Ctrl+k找到了次函数,edit.action没有,创建 (2)去持 ...
- java 设计模式http://www.runoob.com/design-pattern/design-pattern-tutorial.html
参考:http://www.runoob.com/design-pattern/design-pattern-tutorial.html
- Redis 内存溢出过期策略
1: 设置内存最大值, 如果该主机只作为 redis 服务器, 无其它比较占用资源的服务, 建议设置为内存的 3/4 大小, 单位 B 2: 设置内存溢出解决策略, 推荐 1-5 任选一种, 不推荐 ...
- delphi RTTI 三 属性读取与赋值
delphi RTTI 读取属性 运行期 通过RTTI给属性赋值 http://docwiki.embarcadero.com/CodeExamples/Berlin/en/Event_RTTI_In ...
- office2016系列产品关闭时卡顿
关闭Print Spooler服务其方法如下: win+r键–>输入services.msc点击确定如下图 单击word中的文件-选项-加载项-COM加载项-转到,将所有加载项前面的勾都去掉(不 ...
- day44-pymysql模块的使用
pymysql模块的使用 本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一 ...
- Linux 删除指定时间的文件
find /root/demo -mmin +10 -type f -name '*.png' -exec rm -rf {} \; find 相关:http://man.linuxde.net/fi ...
- Web.xml 中 metadata-complete 介绍
Servlet 3.0 的部署描述文件 web.xml 的顶层标签 <web-app> 有一个 metadata-complete 属性, 该属性指定当前的部署描述文件是否是完全的. 如果 ...
- elasticSearch-DSL
DSL: query_string match match_phrase match_phrase_prefix multi_match simple_query_string term term ...
- UI5-学习篇-5-SAP创建OData服务-Structure
本文介绍SAP后端系统基于数据结构创建OData服务过程. 1.创建数据字典 2.创建OData service 2.1创建Gateway service project 事务码:SEGW 点击Cre ...