题意兼解析
输入两个数字B和N。要求找一个A,使得A^N最接近B。
一开始想到的是暴力,不过想想或许可以换个方式来做这道题的。充分利用math.h里的pow(),先对B开n次方,就是用pow(b, 1.0/n).得到一个值right,然后分别对这个值取上整high和下整low,然后再计算pow(high,n),pow(low, n),比较这两个值中最小的那个就是答案。
代码
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int B,N;
while(cin>>B>>N && B && N){
float temp = pow(B,1.0/N);
int low = (int)temp;
int high = (int)temp+1;
float temp1 = pow(low,1.0*N);
float temp2 = pow(high,1.0*N);
if((B-temp1)<=(temp2-B)) cout<<low<<endl;
else cout<<high<<endl;
}
return 0;
}