玄妙
题目
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
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{ int t,num = 1;
cin >> t;
while(t--)
{
long long n;
cin >> n;
int flag = 0;
if(n < 0)
{
n = -n;
flag = 1;
}
int gcd = 0;
for(long long i = 2;i * i <= n;i++)
{
int x = 0;
if(n % i == 0)
{
while(n % i ==0)
{
x ++;
n /= i;
}
}
if(gcd == 0)
gcd = x;
else
gcd = __gcd(x,gcd);
}
if(n > 1)
gcd = __gcd(gcd,1);
if(flag)
{
while(gcd % 2 == 0)
{
gcd /= 2;
}
}
cout << "Case " << num++ << ": " << gcd << endl;
}
return 0;
}