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


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值