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(唯一分解定理)相关推荐

  1. Mysterious Bacteria 唯一分解定理+素数筛

    题目大意: 给你一个数x = b^p,求p的最大值 x = p1^x1*p2^x2*p3^x3*...*ps^xs 开始我以为是找x1.x2.... .xs中的最大值,后来发现想错了,x = b^p, ...

  2. Mysterious Bacteria(唯一质因子解+素数筛)

    原题目: Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange rep ...

  3. 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应该 ...

  4. LightOJ 1220 Mysterious Bacteria(唯一分解定理) (素数筛)

    题干: 给你一个整数x,令x= b p b^p bp(b,p都为整数),求p的最大值. x为32位有符号整型. 思路: 首先,素数因为不能被除1和它自身外整除,所以x为素数时p=1: x为合数时,根据 ...

  5. LightOJ 1220 Mysterious Bacteria

    题目链接:点我 Dr. Mob has just discovered a Deathly Bacteria. He named it RC-01. RC-01 has a very strange ...

  6. LightOJ-1220-Mysterious Bacteria-数论-唯一分解定理

    LightOJ-1220-Mysterious Bacteria-数论-唯一分解定理 [Description] Dr. Mob has just discovered a Deathly Bacte ...

  7. 欧几里得算法与唯一分解定理

    整理的算法模板合集: ACM模板 目录 最大公约数与最大公倍数 唯一分解定理 快速分解质因子 最大公约数与最大公倍数 最多O(logn)O(logn)O(logn) int gcd(int a, in ...

  8. FZU 1075 分解素因子【数论/唯一分解定理/分解素因子裸模板】

    [唯一分解定理]:https://www.cnblogs.com/mjtcn/p/6743624.html 假设x是一个正整数,它的值不超过65535(即1<x<=65535),请编写一个 ...

  9. 唯一分解定理(算术基本定理)详解——hdu5248和lightoj1341

    算数分解定理(唯一分解定理): 定义: 任何一个大于1的自然数 N,如果N不为质数,那么N可以唯一分解成有限个质数的乘积 N=P1a1 P2a2P3a3-Pnan,这里P1<P2<P3-& ...

最新文章

  1. Mschat控件示例升级错误处理方法
  2. 数据库-SQL中like的用法
  3. document的window对象
  4. leetcode 146.缓存机制(中等)
  5. iOS 更改项目名称
  6. SpringCloud:Zuul 路由访问(基本使用、路由功能、过滤访问、服务降级)
  7. flask项目开发中,遇到http 413错误
  8. 图论 —— DAG 图的最长路
  9. 关于服务发现和负载均衡,你想知道的都在这儿
  10. 【NOIP2015】【Luogu2670】扫雷游戏(搜索,字符串输入输出)
  11. D3之svg transform 与 css3 transform 区别与联系
  12. bim webgl 模型 轻量化_葛兰岱尔WebGL轻量化GIS+BIM融合引擎 大体量BIM模型LOD技术说明...
  13. 解决报错 Initialize failed: invalid dom.
  14. 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
  15. 基于BP神经网络的车牌识别问题研究附Matlab代码
  16. 基于JCA安全体系的封装
  17. JVM运行参数之-X和-XX参数
  18. enscape3.1完美中文版
  19. lesson5画表情包
  20. 用于智能机械故障诊断的鲁棒权值共享胶囊网络(学习记录)

热门文章

  1. [Redis] Resid的删除策略
  2. 软件测试流程及主要内容
  3. 数组,向量和矩阵以及空间的维数
  4. 组播IP与组播Mac的对应关系
  5. python搜索文献 速成_0基础5天速成Python,你也能发top期刊
  6. Linux如何卸载软件
  7. MySQL~Java的数据库编程:JDBC(JDBC的环境配置以及使用)
  8. 首页布局跟小程序如何配置Iconfont—小程序入门与实战(七)
  9. 如何使用Java实现类似Windows域登录
  10. 微软 Azure人工智能认知服务打造语音提醒喝水助手(带源码和演示地址)