看到1<=p<10101 ,就去想大数操作了,后来看了discuss原来double完全可以放。
类型 长度 (bit) 有效数字 绝对值范围
float 32 6~7 10^(-37) ~ 10^38
double 64 15~16 10^(-307) ~10^308
long double 128 18~19 10^(-4931) ~ 10 ^ 4932
直接用pow(n,1/p)就可以了
#include<iostream> #include<math.h> using namespace std; int main() { double n, p; while (cin>>n>>p) { cout << pow(p, 1 / n) << endl; //pow(p,1/n)相当于对p开了n次方 } }