肖恩的n次根 (二分)
问题描述
喜欢研究数学问题的肖恩注意到,在编程语言中通常内置函数只有开平方根和开立方根。但是肖恩想知道开高次方根(大于 3 次方称为高次方)应该怎么来做。请你设计一个程序来帮帮肖恩。
输入描述
输入两个数字 a 和 b ,输出 a 的 b 次方根的值。
数据保证: 0<a≤1000,1≤b≤5。
输出描述
输出 aa 的 bb 次方根的值乘 1000 后保留整数的结果。
样例输入
5 3
样例输出
1709
说明
55 开 33 次方根的结果保留五位小数是 1.709981.70998 ,乘 10001000 得到 1709.981709.98 ,保留整数以后得到 17091709 。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
double a,b;
bool check(double n)
{
double cnt=1;
for(int i=1;i<=b;i++)cnt*=n;
return cnt>=a;
}
double bsearch(double l,double r)
{
double eps=1e-6;
while(r-l>eps)
{
double mid=(l+r)/2;
if(check(mid))r=mid;
else l=mid;
}
return r;
}
int main()
{
cin>>a>>b;
double ans=bsearch(1.0,1000.0);
cout<<(int)(ans*1000);
}