#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main(int argc, const char * argv[]) {
double n,p;
while (cin>>n>>p) {
double k=pow(p, 1/n);
printf("%.0lf\n",k);
}
return 0;
}
1、float和double的表示范围
float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
2、float和double的表示精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
说明运用pow(double a,double b)函数完全够用,嗯……double功能好强大