hdoj/hdu 2740 Root of the Problem(C++中好多好用的數學符號啊)

超級傳送門:

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;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章