Mysterious Bacteria(唯一质因子解+素数筛)
原题目:
Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange reproduction system. RC-01 lives exactly x days. Now RC-01 produces exactly p new deadly Bacteria where x = b的p次方 (where b, p are integers). More generally, x is a perfect pth power. Given the lifetime x of a mother RC-01 you are to determine the maximum number of new RC-01 which can be produced by the mother RC-01.
Input
Input starts with an integer T (≤ 50), denoting the number of test cases.
Each case starts with a line containing an integer x. You can assume that x will have magnitude at least 2 and be within the range of a 32 bit signed integer.
Output
For each case, print the case number and the largest integer p such that x is a perfect pth power.
Sample Input
3
17
1073741824
25
Sample Output
Case 1: 1
Case 2: 30
Case 3: 2
题意:求给出x的b的最大p次方(b,p未知整数)
输入:
第一行一个整数T
接下来T行,每行一个x。
思路:
求x的唯一质数因子,因为是求质数因子,所以先用素数筛,将质数筛选出来,然后对筛选出来的质因子进行求次方数。
最后,求x各质因子的最大公因数(gcd)即可。
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N = 100010;
typedef long long ll;
int prime[N],ans=0;
bool ver[N];void Prime()
{memset(ver,true,sizeof(ver));ver[1]=false;for(int i=2;i<N;i++){if(ver[i]){prime[ans++]=i;for(int j=i;1LL*i*j<N;j++)ver[i*j]=false;}}
}int gcd(int a,int b)
{return a%b==0?b:gcd(b,a%b);
}int main()
{int t,p=0;ll n;Prime();cin>>t;while(t--){p++;cin>>n;int f=0;if(n<0){n=-n;f=1;}int x,k=0;for(int i=0;i<ans&&prime[i]*prime[i]<=n;i++){if(n%prime[i]==0){x=0;while(n%prime[i]==0){x++;n/=prime[i];}if(k==0)k=x;elsek=gcd(k,x);}}if(n>1)k=gcd(k,1);if(f==1){while(k%2==0)k=k/2;}printf("Case %d: %d\n",p,k);}return 0;
}
Mysterious Bacteria(唯一质因子解+素数筛)相关推荐
- Mysterious Bacteria(唯一分解定理)
Mysterious Bacteria(唯一分解定理) Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 ...
- Mysterious Bacteria 唯一分解定理+素数筛
题目大意: 给你一个数x = b^p,求p的最大值 x = p1^x1*p2^x2*p3^x3*...*ps^xs 开始我以为是找x1.x2.... .xs中的最大值,后来发现想错了,x = b^p, ...
- 2007 - 半质数 --- 素数筛+2137 - 质因子2
** 2007 - 半质数 --- 素数筛 **来源:东方博宜oj oj.czos.cn*解法一:(线性筛) #include<bits/stdc++.h> using namespace ...
- 素数(质数),合数 ,偶数 , 奇数 ,约数(因数) ,因子 , 质因子 , 哥德巴赫猜想定义
约数(因数):如果整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a.a称为b的倍数,b称为a的约数.例如4 的约数(因数) 有 1 , 2 , 4 : 因子 ...
- Min_25筛有关求解次小质因子
#188. [UR #13]Sanrd 题意化简就是求次小质因子,这一步我们可以在Min_25筛的ans计算中得到, S(n, j)表示的是最小质因子大于等于primejprime_jprimej的 ...
- 【算法竞赛模板】质因子、质数、约数、余数、快速幂(数论大全)
常用数论的算法模板 一.质因子 二.质数 三.约数 ① 试除法求一个数所有约数 ② 求约数个数 ③ 求约数和 ④ 求最大公约数 <1> gcd辗转相除 <2> 扩展欧几里得 & ...
- 算术基本定理之统计质因子个数———以及因子的个数
算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式. 例如 90=2 * 3^2 * 5: 1 我们要做的就是找到90的所 ...
- PAT甲级1059 Prime Factors :[C++题解]分解质因子
文章目录 题目分析 题目链接 题目分析 暴力求质因数 下面i就是质因子,s是质因子i的阶数. 暴力的时间复杂度O(n),会超时 void divide(int n){for(int i=2;i< ...
- java 素数欧拉筛选_[C++]欧拉素数筛的理解与实现
在传统的素数筛法中,我们使用了对于每一个数n,在 1~(√n) 范围内进行取模检查,这样逐一判断的复杂度为n(√n). 但如果我们需要更快的筛法时怎么办? 于是著名的欧拉筛诞生了.它能将复杂度降为** ...
最新文章
- 谷歌提出新型卷积网络EfficientNet:推理速度提升5.1倍,参数减少88%(附论文代码)...
- 网络协议是什么?—Vecloud微云
- html 将两个标签绑在一起,基本标签2
- YUI事件体系之Y.CustomEvent
- Hibernate-03-Hibernate的检索方式
- Four-tuples 山东省赛F题
- OSI与TCP/IP各层的结构与功能及协议
- SQL在线格式化工具
- 如何学习plc编程?(核心秘诀分享)
- Python for S60(pys60)介绍
- PHP icbc工商银行开放平台聚合支付,二维码扫码支付API云收呗对接步骤,稳步发展
- Linux stress
- 流量+安全 平安WiFi卡位入口战略
- c语言字符串atoi函数,C++_C语言中一些将字符串转换为数字的函数小结,C语言atoi()函数:将字符串转换 - phpStudy...
- aosp_015.配置编译文件,删除自带app
- SpringSecurity系列——会话管理,CSRFday8-1(源于官网5.7.2版本)
- echarts 重新加载数据
- r语言rank降序_常见排序分析方法及R语言实现
- win10升级后蓝牙不见了,设备管理器里没有,多了个串行控制器里的未知USB设备?...
- SAP ECC 6.0 下载以及安装