开方数
时间限制:500 ms | 内存限制:65535 KB
难度:3
- 描述
- 现在给你两个数 n 和 p ,让你求出 p 的开 n 次方。
- 输入
- 每组数据包含两个数n和p。当n和p都为0时表示输入结束。(1<=n<=200,1<=p<=10^101)
- 输出
- 对于每个输出对用输出开方后的结果k(结果小于10^9)。
- 样例输入
-
2 16 3 27 7 4357186184021382204544 0 0
- 样例输出
-
4 3 1234
#include <iostream>
#include <cmath>
using namespace std;int main()
{
int n;
double p;
while(cin>>n>>p)
{
if((!n)&&(!p))
return 0;
long left=0,right=1000000000;
while(left<right)
{
int mid=(left+right)/2;
if(pow(mid,n)==p)
{
cout<<mid<<endl;
break;
}
else if(pow(mid,n)<p)
left=mid;
else if(pow(mid,n)>p)
right=mid;
}
}
return 0;
}