poj1730

题意:求一个32位整数n写成整数幂的形式,指数最大是多少。

分析:首先结果不超过32。从大到小枚举即可。用pow函数,pow函数可以开方,例如求n开i次方,可以改为求n的1/i次幂。一定要写精度,否则wa

View Code
#include <iostream>
#include
<cstdio>
#include
<cstdlib>
#include
<cstring>
#include
<cmath>
usingnamespace std;

#define eps 1.0e-12

longlong n;

void work()
{
bool fu =false;
if (n <0)
{
fu
=true;
n
=-n;
}
for (int i =32; i >=1; i--)
if (!fu || (fu && (i &1)))
{
double a = pow(double(n), 1.0/ i);
longlong x = a;
if (abs(a - x) < eps || abs(a - x -1) < eps)
{
printf(
"%d\n", i);
return;
}
}
}

int main()
{
//freopen("t.txt", "r", stdin);
while (scanf("%lld", &n), n)
work();
return0;
}
原文地址:https://www.cnblogs.com/rainydays/p/2079846.html