POJ2635(数论+欧拉筛+大数除法)
题目链接:https://vjudge.net/problem/POJ-2635
题意:给定一个由两个质数积的大数M和一个数L,问大数M的其中较小的质数是否小于L。
题解:因为大数M已经超过long long 范围,那么我们就需要进行大数分解由十进制转换为1000进制,然后只要从2-L遍历一遍。
代码详情:


1 #include<iostream>
2 #include<algorithm>
3 #include<vector>
4 #include<cstring>
5 #include<cstdio>
6 #include<queue>
7 using namespace std;
8 #define mem(s,n) memset(s,n,sizeof s);
9 typedef long long ll;
10 const int maxn=2e6+100;
11 const int Inf=0x7f7f7f7f;
12 bool isprime[maxn];
13 int prime[maxn];
14 int cnt;
15 // 欧拉筛打表素数表;
16 void judge()
17 {
18 mem(isprime,1);
19 cnt=0;
20 isprime[1]=0;
21 for(int i=2;i<maxn;i++)
22 {
23 if(isprime[i]==1)
24 prime[cnt++]=i;
25 for(int j=0;j<cnt&&(i*prime[j])<maxn;j++)
26 {
27 isprime[i*prime[j]]=0;
28 if(i%prime[j]==0)
29 {
30 break;
31 }
32 }
33 }
34 }
35 int main()
36 {
37 char s[1005];
38 int n,k;
39 judge();
40 while(scanf("%s%d",s,&n)&&(s[0]!='0'&&n!=0))
41 {
42 int len=strlen(s);
43 for( k=2;k<n;k++)
44 {
45 if(isprime[k]==0) continue;
46 int num=0;
47 //大数分解;
48 for(int i=0;i<len;i+=3)
49 {
50 int t=0,ks=1;
51 for(int j=i;j<i+3&&j<len;j++) //转化为1000进制;
52 {
53 ks*=10;
54 t=t*10+s[j]-'0';
55 }
56 num=num*ks+t;
57 num%=k;
58 }
59 //关键;
60 if(num==0)
61 {
62 printf("BAD %d\n",k);
63 break;
64 }
65 }
66 if(k==n) puts("GOOD");
67 }
68 return 0;
69 }
POJ2635(数论+欧拉筛+大数除法)的更多相关文章
- 素数筛&&欧拉筛
折腾了一晚上很水的数论,整个人都萌萌哒 主要看了欧拉筛和素数筛的O(n)的算法 这个比那个一长串英文名的算法的优势在于没有多次计算一个数,也就是说一个数只筛了一次,主要是在%==0之后跳出实现的,具体 ...
- 【BZOJ 2190】【SDOI 2008】仪仗队 欧拉筛
欧拉筛模板题 #include<cstdio> using namespace std; const int N=40003; int num=0,prime[N],phi[N]; boo ...
- [51NOD1181]质数中的质数(质数筛法)(欧拉筛)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1181 思路:欧拉筛出所有素数和一个数的判定,找到大于n的最小质 ...
- 欧拉筛,线性筛,洛谷P2158仪仗队
题目 首先我们先把题目分析一下. emmmm,这应该是一个找规律,应该可以打表,然后我们再分析一下图片,发现如果这个点可以被看到,那它的横坐标和纵坐标应该互质,而互质的条件就是它的横坐标和纵坐标的最大 ...
- pku-2909 (欧拉筛)
题意:哥德巴赫猜想.问一个大于2的偶数能被几对素数对相加. 思路:欧拉筛,因为在n<215,在3万多,一个欧拉筛得时间差不多4*104, 那么筛出来的素数有4千多个,那么两两组合直接打表,时间复 ...
- hdu2973-YAPTCHA-(欧拉筛+威尔逊定理+前缀和)
YAPTCHA Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- hdu2421-Deciphering Password-(欧拉筛+唯一分解定理+积性函数+立方求和公式)
Deciphering Password Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- POJ-3126.PrimePath(欧拉筛素数打表 + BFS)
给出一篇有关素数线性筛和区间筛的博客,有兴趣的读者可以自取. 本题大意: 给定两个四位的素数,没有前导零,每次变换其中的一位,最终使得两个素数相等,输出最小变换次数.要求变换过程中的数也都是素数. 本 ...
- UVA12995 Farey Sequence [欧拉函数,欧拉筛]
洛谷传送门 Farey Sequence (格式太难调,题面就不放了) 分析: 实际上求分数个数就是个幌子,观察可以得到,所求的就是$\sum^n_{i=2}\phi (i)$,所以直接欧拉筛+前缀和 ...
随机推荐
- 问题记录 java.lang.NoClassDefFoundError: org/dom4j/DocumentException
客户端调webservice服务产生以下错误 AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.genera ...
- sql-libs(2) 数字型
经测试,发现是数字型的注入,直接 and 1=1 返回正常,and1=2返回错误,感觉比第一关更加简单一点啊,,透~ 经测试order by 为 3 . 1. union 注入 http://192. ...
- μC/OS-III---I笔记7---消息队列
消息队列 任务之间仅仅靠信号量进行"沟通"是不够的,信号量可以标志事件的发生,却无法传递更多的数据,在需要任务间的数据信息传递时就绪要用到消息队列,传统我们一般在前后太系统中都是通 ...
- DuckDuckGo Privacy Browser
DuckDuckGo Privacy Browser https://apps.apple.com/app/duckduckgo-privacy-browser/id663592361 https:/ ...
- scroll calendar & scroll view
scroll calendar & scroll view https://taro-docs.jd.com/taro/docs/components/viewContainer/scroll ...
- js & for & for of & for in & forEach, break
js & for & for of & for in & forEach, break js for break https://stackoverflow.com/q ...
- 2021-2-19:请问你知道 Java 如何高性能操作文件么?
一般高性能的涉及到存储框架,例如 RocketMQ,Kafka 这种消息队列,存储日志的时候,都是通过 Java File MMAP 实现的,那么什么是 Java File MMAP 呢? 什么是 J ...
- 1004 Counting Leaves ——PAT甲级真题
1004 Counting Leaves A family hierarchy is usually presented by a pedigree tree. Your job is to coun ...
- tomcat运行多个项目同一个端口与不同端口的设置
一.首先打包项目 这里采用eclipse开发工具,选中项目右击,点击Export进入 选择web下的 WAR file ,点击next 在这里可能有坑,新装的eclipse没有web文件夹 此时需要下 ...
- python进阶(7)垃圾回收机制
Python垃圾回收 基于C语言源码底层,让你真正了解垃圾回收机制的实现 引用计数器 标记清除 分代回收 缓存机制 Python的C源码(3.8.2版本) 1.引用计数器 1.1环状双向链表 refc ...