原题链接:http://poj.org/problem?id=1730
很恶心的一道题,首先被精度搞得wa爆,然后很2B以为在int范围内 -(-2^31) = 2^31,额滴神啊,2^31次方还在int范围吗!!!
#include <stdio.h> #include <stdlib.h> #include <math.h> const double eps = 1e-12; int main() { long long n, i; double j; bool flag; while(scanf("%lld", &n), n) { flag = false; if(n < 0) flag = true, n = -n; for(i = 31; i > 1; i --) { if(flag && i % 2 == 0) continue; j = pow(n, 1.0 / i); if(fabs(j - floor(j + eps)) < eps) break; } printf("%d\n", i); } return 0; }