题目大意:

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应该是gcd(4, 2) = 2,即324 = 18^2
所以p = gcd(x1, x2, x3, ... , xn){欧几里得算法求取最大公约数};
*本题有一个坑,就是x可能为负数,如果x为负数的话,x = b^q, q必须使奇数,所以将x转化为正数求得的解如果是偶数的话必须将其一直除2转化为奇数

题目:

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 xdays. 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

AC代码:

#include<iostream>
#include<string.h>
typedef long long ll;
#include<stdio.h>
using namespace std;
#define M 1000010
int dp[M];
int book[M];
int t,k;
ll m;
void dfs()
{k=0;memset(dp,0,sizeof(dp));memset(book,0,sizeof(book));for(int i=2; i<M; i++)/**因为任何一个整数都可以由一个素数经过乘法运算得到,故可通过素数打表的方式求得某数的唯一分解(得到幂次最大)*/if(!book[i]){dp[k++]=i;/*记录素数*/for(int j=2; i*j<M; j++)book[j*i]=1;}
}
int gcd(int a,int b)
{return !b?a:gcd(b,a%b);
}
int main()
{cin>>t;int tt=1;dfs();while(t--){int flag=0;cin>>m;if(m<0)/**本题的坑:m可能为负数*/{flag=1;m=-m;}int ans=0;for(int i=0;i<k&&dp[i]*dp[i]<=m;i++)/**care:remember停止条件为i<k&&dp[i]*dp[i]<=m,缺一不可*/{if(m%dp[i]==0){int a=0;while(m%dp[i]==0){m/=dp[i];/**唯一分解定理:直接对m的值进行操作,得到x=a1^b1*a2^b2.....an^bn*/a++;}if(ans=0)ans=a;elseans=gcd(ans,a);/**欧几里得算法:求得到的素数的幂次进行求取最大公约数操作*/}if(m==1)break;}if(m>1)/**则m为素数,因数只有1和自身*/ans=1;if(flag)/**填坑:若为负数,幂次不可能为偶数,故由最大公约数求出最大的奇数*/{while(ans%2==0)ans/=2;}printf("Case %d: %d\n",tt++,ans);}return 0;
}

LightOJ-1220 Mysterious Bacteria (素数打表+欧几里得算法+唯一分解定理)给出x,求x=a^p,最大的指数相关推荐

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

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

  2. LightOJ 1220 Mysterious Bacteria

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

  3. Aladdin and the Flying Carpet (素数打表+正整数的唯一分解定理,找因数对)

    题目大意:给两个数a,b,求满足c*d==a且c>=b且d>=b的c,d二元组对数,(c,d)和(d,c)属于同一种情况 题目分析:根据唯一分解定理先将a唯一分解,则a的所有正约数的个数为 ...

  4. 类欧几里得算法详细推导过程(附带模板)

    类欧几里得算法推导 初识 给出三种形式: f(a,b,c,n)=∑i=0n⌊ai+bc⌋f(a, b, c, n) = \sum_{i = 0} ^{n} \lfloor\frac{ai + b}{c ...

  5. 欧几里得算法和扩展欧几里得算法——杨子曰数学

    欧几里得算法和扩展欧几里得算法--杨子曰数学 超链接:数学合集 不说废话,咱们直接开始 欧几里得算法 一句话: g c d ( a , b ) = g c d ( b , a m o d b ) gc ...

  6. 欧几里得算法与不定方程

    本文主要介绍数论中的欧几里得算法,线性方程及它们之间的关系.本文主要参考了<数论概论>,因此将本文当成这本书的读书笔记也未尝不可. (本文正被完善中--) 欧几里得算法 问题:求60和22 ...

  7. LightOJ 1259 Goldbach`s Conjecture 素数打表

    题目大意:求讲一个整数n分解为两个素数的方案数. 题目思路:素数打表,后遍历 1-n/2,寻找方案数,需要注意的是:C/C++中 bool类型占用一个字节,int类型占用4个字节,在素数打表中采用bo ...

  8. 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)

    http://poj.org/problem?id=1411  POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...

  9. 筛法求素数 素数打表

    c++ #include<cstdio> #include<cstring> #include<cmath>//素数打表 ,时间复杂度:O(nlog n) char ...

最新文章

  1. EasyRTMP手机直播推送rtmp流flash无法正常播放问题
  2. conda的导入导出
  3. Vue:echarts的柱状图为什么X轴上的文字不显示?
  4. OPPO平板智能眼镜终于开售!天玑版旗舰手机没有搭载自研芯片引热议
  5. 设置 myeclipse 编码格式
  6. 推荐一款Python开源库,技术人必备的造数据神器!
  7. kitkat-s5p4418drone 记录
  8. 信息学奥赛一本通(2070:【例2.13】数字对调)
  9. 重构职场竞争力之测试跨界思维
  10. 打开的文件过多问题排查思路及解决过程
  11. numpy 矩阵 秩_Python(NumPy):集合只能映射秩1数组
  12. 2021-02-26
  13. 树莓派——8、树莓派博通BCM2835芯片手册导读
  14. 引流产品用哪些比较合适?什么样的产品适合做引流?
  15. 查看树莓派I2C设备是否正常
  16. win10每次开机后,D、E、F盘就不见了,需要进入“磁盘管理”重新分配
  17. 从USB数据采集板看技术造诣
  18. HashSet-哈希值
  19. Error: Program type already present: android.support.design.widget.CoordinatorLayout$Behavior 预览器异常
  20. 如何锁自己的台式计算机,台式机键盘如何解锁

热门文章

  1. linux之用 grep -r 关键字 快速搜索在目录下面的含有关键字的文件
  2. php中的匿名函数简单使用
  3. python发邮件脚本详解_Python发送邮件脚本
  4. 软件项目组织管理(四)项目集成管理
  5. 一组超炫酷的动图,感受那让人窒息的数学之美!
  6. 为什么现在老师这么难,值得大家深思
  7. 计算机ftp怎么登陆新用户,多用户登录ftp
  8. python浪漫代码_五行Python代码实现批量抠图
  9. linux 消息队列_Linux进程间通信第六讲 标准IPC之消息队列
  10. java语言程序设计一_java语言程序设计(一)-1