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次操作后, ...
随机推荐
- oracle数据库启动流程及登录认证方式详解
转自:https://www.2cto.com/database/201803/726644.html ■ oracle启动流程-windows下 1) lsnrctl start (启动监听) ...
- preparedstatement 为什么可以防止sql注入
有大神总结的很好,,参考文献 http://www.importnew.com/5006.html preparedstatement优势:sql的预编译(数据库层面完成)提升效率. 为什么可以防止s ...
- 应用SharedPreference保存程序的配置信息
SharedPreference: 1.用来保存应用程序的配置信息的XML文件,内部的数据形式为键值对 2.一般存在于/data/data/<包名>shared_prefs目录下 3.该对 ...
- SQL优化 - 避免使用 IN 和 NOT IN
WHY? IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢? 1.效率低 项目中遇到这么个情况: t1表 和 t2表 都是150w条数据,600M的样子,都不算大. 但是这样一句查询 ...
- 服务发现 - consul 的介绍、部署和使用(转)
什么是服务发现 相关源码: spring cloud demo 微服务的框架体系中,服务发现是不能不提的一个模块.我相信了解或者熟悉微服务的童鞋应该都知道它的重要性.这里我只是简单的提一下,毕竟这不是 ...
- Linux:使用互斥量进行线程同步
基础知识 同步概念 所谓同步,即同时起步,协调一致.不同的对象,对"同步"的理解方式略有不同.如,设备同步,是指在两个设备之间规定一个共同的时间参考:数据库同步,是指让两个或多个数 ...
- 黑马2018年JavaEE课程大纲
包含 黑马旅游网 企业级权限管理系统 品优购 十次方 乐优(没有,十次方级别) http://www.itheima.com/course/javaeetext.html 传智 ...
- jenkins com.jcraft.jsch.JSchException: Auth cancel
jenkins构建时报如下错误: 首先去系统管理--->系统设置上看看SCP插件中的用户名和密码是否正确
- 【转】【java】论integer是地址传递还是值传递
转自:http://www.tuicool.com/articles/AraaQbZ 论integer是地址传递还是值传递 Integer 作为传参的时候是地址传递 , 可以参考如下例子,在程序刚启动 ...
- Kotlin语言编程技巧集
空语句 Kotlin 语言中的空语句有 {} Unit when (x) { 1 -> ... 2 -> ... else -> {} // else -> Unit } Wh ...