题目:
http://poj.org/problem?id=2109
题意:
给两个数字n,p,求k使得k^n=p
其中p<=10^101,k一定存在
参考:
http://blog.csdn.net/lyy289065406/article/details/6642602
思路:
double的大小范围是10^(-307) ~ 10^(308),但精确位只有前16位,考虑到高次方后数据差别极大,可直接计算不用高精度
用double直接读取p,用pow函数求解,pow(p,1/n)即求p的n次方根
实现过程发现,如果用
printf("%.0lf",pow(p,1/n));
并选择G++编译器会报wa,一定要用cin输出
printf形式只有在选择了c编译器时ac
代码:
#include <stdio.h>
#include <iostream>
#include <math.h>
using namespace std;
int main(){
double n,p;
while (scanf("%lf %lf",&n,&p)!=EOF){
cout<<pow(p,1.0/n)<<endl;
}
return 0;
}