您的位置:首页 > 其它

zoj 2818 Root of the Problem

2017-03-10 11:53 267 查看
Root of the ProblemTime Limit: 2 Seconds Memory Limit: 65536 KB
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.

#include <iostream>
#include <cmath>
#include <cstdlib>
using namespace std;
int main(){
double b, n;
while(cin >> b >> n){
if(b == 0 && n == 0)
break;
//pow:double pow(double, double)
int a = (int)pow(b, 1/ n);//直接取整,不是四舍五入 ,pow(a, n) < b
if(b - pow(a, n) < pow(a + 1, n) - b)
cout << a << endl;
else
cout << a + 1 << endl;
}
return 0;
}


Example Input:Example Output:
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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: