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次操作后, ...
随机推荐
- stage的划分
stage的划分是以shuffle操作作为边界的,遇到一个宽依赖就分一个stage 一个Job会被拆分为多组Task,每组任务被称为一个Stage就像Map Stage, Reduce Stage.S ...
- tomcat中项目后有括号
引入他人项目时,由于报错,copy本地workspace下其他项目的 .settings和.project到该项目路径下 结果Eclipse 的 Server 中出现了 aaa(bbb)的情况 并且 ...
- 复习 HTML
1.<b></b>:加粗 <i></b>:斜体 <u></u>:文字下划线 <s></s>:文字删除线 ...
- python语言程序设计-北京理工大学-嵩天等课件代码整理
#TempConvert.py TempStr = input("请输入带有符号的温度值: ") if TempStr[-1] in ['F', 'f']: C = (eval(T ...
- react-native启动页面设置,react-native-splash-screen
用于解决iOS和Android启动白屏问题及简单的启动页面展示 下载 react-native-splash-screen yarn add react-native-splash-screen re ...
- TCP/IP三次握手与四次挥手
三次握手: TCP(Transmission Control Protocol) 传输控制协议 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接 位码即tcp标志位 ...
- python 阿狸的进阶之路(7)
面向对象 转自林海峰的博客 http://www.cnblogs.com/linhaifeng/articles/6182264.html 面向对象的理解: 将数据分类,比如学生类.数据有关的函数, ...
- secureCRT工具下载和安装
本文主要提供secureCRT软件下载和安装操作指导,节约软件查找和安装时间. 使用环境 32位Windows系统 软件下载 secureCRT软件和注册机下载:secureCRT 安装步骤和注意事项 ...
- ORACLE常用操作命令
1.ORACLE实例启动.停止 SQL>startup; #启动ORACLE实例 SQL>shutdown immediate; #关闭ORACLE实例,常用.阻止新用户连接且阻止已连接 ...
- [leetcode]股票题型123
122. Best Time to Buy and Sell Stock II Say you have an array for which the ith element is the price ...