这道题很简单,直接AC就可以了。
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cmath>
#include <vector>
#define M 1000000
using namespace std;
int main()
{
long long n;
while(cin>>n && n)
{
double i;
if(n>0)
{
for(i=32; i>=2; i--)
{
long long nn=pow((double)n,1.0/i)+0.1;
if(pow(nn,i)==n) break;
}
}
else
{
n=-n;
for(i=31; i>=2; i-=2)
{
long long nn=pow((double)n,1.0/i)+0.1;
if(pow(nn,i)==n) break;
}
}
cout<<i<<endl;
}
return 0;
}