首页 > 代码库 > NYOJ 633 幂

NYOJ 633 幂

时间限制:3000 ms  |  内存限制:65535 KB
难度:4
描述
在学习循环的时候,我们都练习过利用循环计算a的k次方。现在给定整数k和一个整数m,请你求出对应的整数a,使得a的k次方是不超过m并且最接近m的数值。 
输入
一个整数T表示测试组数。
对于每组测试数据:
给定两个整数k和m 

数据范围:
1 <= T <= 20
1 <= k <= 10^9
0 <= a <= 10^9
0 <= M <= 10^100
输出
对于每组数据,输出一个整数a占一行。
样例输入
2
2 4
3 27 
样例输出
2
3 
思路:通过pow(10,log10(m)/k)先求出一个已相当接近m的近似值a,然后再逐渐增加a,得解!
另外:后台数据M的值的范围是[0,10^100]?疑问
AC码:
#include<stdio.h>
#include<math.h>
int main()
{
	double k,m;
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%lf%lf",&k,&m);
		int a=pow(10,log10(m)/k);
		while(pow(a+1,k)<=m)
			++a;
		printf("%d\n",a);
	}
	return 0;
}