Mysterious Bacteria(唯一分解定理)
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 = bp (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(可为负),求满足x=bp,p的最大值
思路: 由唯一分解定理,一个整数x=p1 a1 *p2a2*p3a3…,即对于一个x,我们先把它分解为n个质数相乘,则 所求p= gcd(a1,a2,a3,a4,a5,…,an),如果x为负,指数就不能为偶数(负数的偶次方为正数),如果算出答案为偶,就除2到为奇
AC代码:
#include<stdio.h>
#include<string.h>
#define ll long long
#include<algorithm>
using namespace std;
const int N=110000;
ll p[N],book[N],l,n;
void init()
{ll i,j;l=0;memset(book,0,sizeof(book));for(i=2;i<N;i++){if(!book[i]){p[l++]=i;for(j=0;i*p[j]<=N&&j<l;j++){book[i*p[j]]=1;if(i%p[j]==0)break;}}}
}
int gcd(ll a,ll b)
{if(b==0)return a;elsereturn gcd(b,a%b);
}
int main()
{ll t,c=1;scanf("%lld",&t);init();while(t--){int sum=0,f=0;scanf("%lld",&n);if(n<0){f=1;n=-n;}for(ll i=0;i<l&&p[i]*p[i]<=n;i++){if(n%p[i]==0){int cnt=0;while(n%p[i]==0){n/=p[i];cnt++;}if(cnt==0)sum=cnt;elsesum=gcd(sum,cnt);}}if(n!=1)sum=1;if(f){while(sum%2==0)sum/=2;}printf("Case %lld: %lld\n",c++,sum);}return 0;
}
Mysterious Bacteria(唯一分解定理)相关推荐
- Mysterious Bacteria 唯一分解定理+素数筛
题目大意: 给你一个数x = b^p,求p的最大值 x = p1^x1*p2^x2*p3^x3*...*ps^xs 开始我以为是找x1.x2.... .xs中的最大值,后来发现想错了,x = b^p, ...
- Mysterious Bacteria(唯一质因子解+素数筛)
原题目: Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange rep ...
- LightOJ-1220 Mysterious Bacteria (素数打表+欧几里得算法+唯一分解定理)给出x,求x=a^p,最大的指数
题目大意: x = b^p, x只有一个因子的p次幂构成 如果24 = 2^3*3^1,p应该是gcd(3, 1) = 1,即24 = 24^1 324 = 3^4*2^2=(3^2*2)^2,p应该 ...
- LightOJ 1220 Mysterious Bacteria(唯一分解定理) (素数筛)
题干: 给你一个整数x,令x= b p b^p bp(b,p都为整数),求p的最大值. x为32位有符号整型. 思路: 首先,素数因为不能被除1和它自身外整除,所以x为素数时p=1: x为合数时,根据 ...
- LightOJ 1220 Mysterious Bacteria
题目链接:点我 Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange ...
- LightOJ-1220-Mysterious Bacteria-数论-唯一分解定理
LightOJ-1220-Mysterious Bacteria-数论-唯一分解定理 [Description] Dr. Mob has just discovered a Deathly Bacte ...
- 欧几里得算法与唯一分解定理
整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...
- FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】
[唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...
- 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341
算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...
最新文章
- Mschat控件示例升级错误处理方法
- 数据库-SQL中like的用法
- document的window对象
- leetcode 146.缓存机制(中等)
- iOS 更改项目名称
- SpringCloud:Zuul 路由访问(基本使用、路由功能、过滤访问、服务降级)
- flask项目开发中,遇到http 413错误
- 图论 —— DAG 图的最长路
- 关于服务发现和负载均衡,你想知道的都在这儿
- 【NOIP2015】【Luogu2670】扫雷游戏(搜索,字符串输入输出)
- D3之svg transform 与 css3 transform 区别与联系
- bim webgl 模型 轻量化_葛兰岱尔WebGL轻量化GIS+BIM融合引擎 大体量BIM模型LOD技术说明...
- 解决报错 Initialize failed: invalid dom.
- 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
- 基于BP神经网络的车牌识别问题研究附Matlab代码
- 基于JCA安全体系的封装
- JVM运行参数之-X和-XX参数
- enscape3.1完美中文版
- lesson5画表情包
- 用于智能机械故障诊断的鲁棒权值共享胶囊网络(学习记录)