zoj 2818 Root of the Problem(数学思维题)

题目链接:

  http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2818

题目描述:

Given positive integers B and N, find an integer A such that AN is as close as possible to B. (The result A is an approximation to the Nth root of B.) Note that AN may be less than, equal to, or greater than B.

Input: The input consists of one or more pairs of values for B and N. Each pair appears on a single line, delimited by a single space. A line specifying the value zero for both B and N marks the end of the input. The value of B will be in the range 1 to 1,000,000 (inclusive), and the value of N will be in the range 1 to 9 (inclusive).

Output: For each pair B and N in the input, output A as defined above on a line by itself.

4 3
5 3
27 3
750 5
1000 5
2000 5
3000 5
1000000 5
0 0


1
2
3
4
4
4
5
16

 1 /*问题 输入正整数b和n,找到一个正整数a满足a^n最靠近b
 2 解题思路 a^n=b,那么a等于b的算数n次方根,即b的1/n次方等于a, 比较a^n和(a+1)^n谁更接近b */
 3 #include<cstdio>
 4 #include<cmath>
 5 int main()
 6 {
 7     double b,n;
 8     int a;
 9     while(scanf("%lf%lf",&b,&n),b+n != 0)
10     {
11         a=(int)pow(b,1/n);//强制类型转换时直接截取整数部分
12         if(b-pow(a,n) < pow(a+1,n)-b)
13             printf("%d\n",a);
14         else
15             printf("%d\n",a+1); 
16     }
17     return 0;    
18 } 

 

posted @ 2018-03-11 12:11  Reqaw  阅读(254)  评论(0编辑  收藏  举报