/*
输入最大数是2的32次方,故所有输出<=32,故可以枚举
没想到pow(1.0*n,1.0/i)还能这样开n的i次方
*/
#include<stdio.h>
#include<math.h>
int main()
{
__int64 b,bb;
int i,j;
while(scanf("%I64d",&b),b)
{
double z,zz;
int x,y;
if(b==1)
{
printf("1\n");
continue;
}
if(b>0)
{
for(i=32;i>=1;i--)
{
z=1.0/i*log((double)b);
zz=exp(z);
x=(int)zz;
y=x+1;
bb=1;
for(j=1;j<=i;j++)
bb*=x;
if(bb==b)
break;
bb=1;
for(j=1;j<=i;j++)
bb*=y;
if(bb==b)
break;
}
printf("%d\n",i);
}
else
{
b=-b;
for(i=31;i>=1;i=i-2)
{
z=1.0/i*log((double)b);
zz=exp(z);
x=(int)zz;
y=x+1;
bb=1;
for(j=1;j<=i;j++)
bb*=x;
if(bb==b)
break;
bb=1;
for(j=1;j<=i;j++)
bb*=y;
if(bb==b)
break;
}
printf("%d\n",i);
}
}
return 0;
}
poj 1730 Perfect Pth Powers
最新推荐文章于 2020-06-20 08:13:43 发布