x = bp,给定整数x,求最大的p使得b是个整数
pow(64, 1.0 / 3)可能返回3.99……,如果转换成int,就变成3了,所以,假设结果是ans,
必须对ans和ans+1分别测试。
int main()
{
double n;
while (scanf("%lf", &n) == 1 && n) {
int i;
int flag = 0;
if (n < 0) {
n = -n;
flag = 1;
}
for (i = 32; i >= 1; --i) {
if (flag == 1 && i % 2 == 0) continue ;
double tmp = (int)pow(n, 1.0 / i);
if (pow(tmp + 0.0, i) == n || pow(tmp + 1.0, i) == n) {
printf("%d\n", i);
break;
}
}
}
return 0;
}