HDU ACM 2740 Root of the Problem 简单数学题

题意:求A,使得A^N最接近B。
分析:A=B^(1/n),对其上下取整,在各取N次幂,取最接近B的。

#include<iostream>
#include<cmath>
using namespace std;  

int main()      
{
	int B,N,p,q;
	double tmp;

	while(cin>>B>>N && (B||N))
	{
		tmp=pow(1.0*B,1.0/N);	
		p=floor(tmp);           //向下取整
		q=ceil(tmp);            //向上取整
		if(B-pow(p,N)>pow(q,N)-B)
			cout<<q<<endl;
		else
			cout<<p<<endl;
	}
    return 0;      
}


你可能感兴趣的:(编程,C++,c,算法,ACM)