超級傳送門:
http://acm.hdu.edu.cn/showproblem.php?pid=2740
題目大意:
給出B,N,求A,使得A^N最接近B ,不論大於或者小於
題目分析:
題目很好做,就是求出B的N次方根,分別向上取整和向下取整,看看那個更適合。
但是怎麼實現捏?
pow(a,b)//求a^b,floor(a)//求a向下取整,ceil(a)//求a向上取整, 這幾個函數幫上大忙了。。
由pow(a,b)//求a^b,得pow(a,1.0/b)//就是求a的b次方根了。。
於是代碼秒殺了:
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int B,N;
double temp;
int a1,a2;
while(scanf("%d %d",&B,&N) != EOF)
{
if(B==0 && N==0) break;
temp = pow(B+0.0,1.0/N);
a1 = floor(temp);
a2 = ceil(temp);
if((B-pow(a1,N)) > (pow(a2,N) - B))
{
printf("%d\n",a2);
}
else
{
printf("%d\n",a1);
}
}
return 0;
}