(数学)POJ - 1365 Prime Land
原题链接:http://poj.org/problem?id=1365
题意:
定义:任何一个大于1的自然数N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积N=P1a1P2a2P3a3......Pnan,这里P1<P2<P3......<Pn均为质数,其中指数ai是正整数。这样的分解称为N的标准分解式
告诉你n分解后的结果,底数pi和ei,要你重新分解n-1
分析:
一道裸的唯一分解定理题。
随便瞎几把一写都能A。
代码:
1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<cmath> 5 #include<cstring> 6 #include<set> 7 #include<vector> 8 #include<queue> 9 #include<map> 10 #include<list> 11 #include<bitset> 12 #include<string> 13 #include<cctype> 14 #include<cstdlib> 15 #include<sstream> 16 17 using namespace std; 18 19 typedef long long ll; 20 typedef unsigned long long ull; 21 #define inf (0x3f3f3f3f) 22 #define lnf (0x3f3f3f3f3f3f3f3f) 23 #define eps (1e-8) 24 int sgn(double a) { 25 return a < -eps ? -1 : a < eps ? 0 : 1; 26 } 27 28 const int maxn=1<<16; 29 bool vis[maxn]; 30 int prime[maxn]; 31 32 int Euler_prime() { 33 memset(vis, true, sizeof(vis)); 34 int tot = 0; 35 for (int i = 2; i < maxn; i++) { 36 if (vis[i]) prime[tot++] = i; 37 for (int j = 0; j < tot&&prime[j] * i < maxn; j++) { 38 vis[i*prime[j]] = false; 39 if (i%prime[j] == 0) break; 40 } 41 } 42 return tot; 43 } 44 string line; 45 46 47 48 void solve() { 49 int pn=Euler_prime(); 50 while(getline(cin,line)){ 51 if(line=="0")break; 52 ll sum=1; 53 int p,e; 54 stringstream ss(line); 55 while(ss>>p>>e){ 56 for(int i=0;i<e;i++){ 57 sum*=p; 58 } 59 } 60 sum--; 61 for(int i=pn-1;i>=0;i--){ 62 if(sum%prime[i]==0){ 63 cout<<prime[i]<<" "; 64 int e=0; 65 while(sum%prime[i]==0){ 66 sum/=prime[i]; 67 e++; 68 } 69 cout<<e<<" "; 70 } 71 if(sum==1)break; 72 } 73 cout<<endl; 74 75 } 76 } 77 78 79 80 int main() { 81 82 #ifndef ONLINE_JUDGE 83 freopen("in.txt", "r", stdin); 84 //freopen("out.txt", "w", stdout); 85 #endif 86 iostream::sync_with_stdio(false); 87 solve(); 88 return 0; 89 }
转载于:https://www.cnblogs.com/tak-fate/p/5910790.html
(数学)POJ - 1365 Prime Land相关推荐
- POJ 1365 Prime Land
题意不好理解啊.. 以下摘自discuss 已知任意一个大于1的数可以表示成一些素数的乘积,即x=p1^e1*p2^e2-- pn^en (pi 为素数,ei 为对应素数的个数),现给你x的表示,要你 ...
- UVA516 POJ1365 LA5533 ZOJ1261 Prime Land【欧拉筛法】
Everybody in the Prime Land is using a prime base number system. In this system, each positive integ ...
- POJ 3126 - Prime Path + Python(BFS)
()原题链接: # 原题:POJ 3126 - Prime Path | 眈眈探求 # 解题思路:https://blog.csdn.net/LYHVOYAGE/article/details/182 ...
- Poj 1811 Prime Test 素数测试 Miller-Rabin 与 整数的因子分解 Pollard rho
随机化算法,想尝试自己写一下,最后还是变成了抄代码... 代码参考了:POJ 1811 Prime Test(大素数判断和素因子分解) - kuangbin - 博客园 学习链接: Miller-Ra ...
- POJ - 3126 - Prime Path(BFS)
Prime Path POJ - 3126 题意: 给出两个四位素数 a , b.然后从a开始,每次可以改变四位中的一位数字,变成 c,c 可以接着变,直到变成b为止.要求 c 必须是素数.求变换次数 ...
- POJ 1811 Prime Test (Rabin-Miller强伪素数测试 和Pollard-rho 因数分解)
题目链接 Description Given a big integer number, you are required to find out whether it's a prime numbe ...
- poj 2395 prime的递归实现
题目链接:http://poj.org/problem?id=2395 求最小水桶的大小,每到达一个农村就能把水桶补满. 可见是用生成最小树,求最大边. 关于prime个人感觉用递归实现会少一个for ...
- POJ 3518 Prime Gap(素数题)
[题意简述]:输入一个数,假设这个数是素数就输出0,假设不是素数就输出离它近期的两个素数的差值,叫做Prime Gap. [分析]:这题过得非常险.由于我是打的素数表. 由于最大的素数是1299709 ...
- POJ 3126 Prime Path(BFS 数字处理)
意甲冠军 给你两个4位质数a, b 每次你可以改变a个位数,但仍然需要素数的变化 乞讨a有多少次的能力,至少修改成b 基础的bfs 注意数的处理即可了 出队一个数 然后入队全部能够由这个素 ...
最新文章
- 服务器网页500错误修复工具,HTTP500错误是什么?如何修复
- TensorFlow学习入门
- IntelliJ IDEA2017 修改缓存文件的路径(转载:https://www.cnblogs.com/acm-bingzi/p/ideaCachePath.html)
- 部署LVS-DR(LVS+Keepalived)群集
- php+mysql记事本_一个简单记事本php操作mysql辅助类创建
- 资源放送丨《Oracle RAC 集群安装部署》PPT视频
- html二维坐标系转换,旋转坐标系 转换工具
- C语言课程设计报告(学生成绩管理系统)
- js 的常用工具类库
- [从零开始学习FPGA编程-5]:快速入门篇 - 操作步骤1 - FPGA工作原理(从硬件资源整合的角度看FPGA编程)
- 简单聊聊OpenWrt的UPnP协议
- jQuery浮出广告插件带关闭
- CIPP非开挖修复技术|UV紫外光与传统水翻CIPP修复对比分析
- python网络爬虫——自学笔记1.用requests库爬取图片
- 解决 linux(centos7)word转换pdf时,pdf乱码问题
- 基于区块链的防护物资捐赠监管系统(三):功能设计
- 数学知识—不同数据范围求组合数,例题、思路、代码实现
- IDEA快捷键之“跳入接口实现类”
- GoEasy与SocketIO实现一对一聊天(浏览器端与浏览器端的即时通信)
- 关于bootstrap 对于 IE9 的兼容问题