# poj-1730 Perfect Pth Powers

407人阅读 评论(0)

Perfect Pth Powers
 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13099 Accepted: 2990

Description

We say that x is a perfect square if, for some integer b, x = b2. Similarly, x is a perfect cube if, for some integer b, x = b3. More generally, x is a perfect pth power if, for some integer b, x = bp. Given an integer x you are to determine the largest p such that x is a perfect pth power.

Input

Each test case is given by a line of input containing x. The value of x will have magnitude at least 2 and be within the range of a (32-bit) int in C, C++, and Java. A line containing 0 follows the last test case.

Output

For each test case, output a line giving the largest integer p such that x is a perfect pth power.

Sample Input

17
1073741824
25
0


Sample Output

1
30
2

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
long long n;     //int不能满足要求了...
while(scanf("%lld",&n)!=EOF)
{
if(n==0) break;
long long  m;
int i;
int ans=1;
if(n<0)       //n可能为为负数
{	m=-n;i=3;}    //负数当然得要是某个负数的奇次幂咯
else
{	m=n;i=2;}
double eps=1e-12;   //精度很重要的,不能太小
double p;
for(;i<=32;)
{
p=pow(m*1.0,1.0/i);    //pow(int,int)提交报错....改为float
if(fabs(int(p+eps)-p)<eps)    //x等于a的b次方,b是整数,a也要是整数哦.
ans=i;
if(n<0)
i+=2;     //负数当然得要是某个负数的奇次幂咯
else
i++;
}
printf("%d\n",ans);
}
return 0;
}

0
0

* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场
个人资料
• 访问：83561次
• 积分：1576
• 等级：
• 排名：千里之外
• 原创：63篇
• 转载：2篇
• 译文：0篇
• 评论：68条
评论排行
最新评论