The Problem
问题
Given an integer n ≥ 1 and an integer p ≥ 1 you are to write a program that determines , the positive nth root of p. In this problem, given such integers n and p, p will always be of the form kn for an integer k (this integer is what your program must find).
The Input
输入
The input consists of a sequence of integer pairs n and p with each integer on a line by itself. For all such pairs 1 ≤ n ≤ 200, 1 ≤ p ≤ 10101and there exists an integer k, 1 ≤ k ≤ 109 such that kn = p.
The Output
输出
For each integer pair n and p the value should be printed, i.e., the number k such that kn = p.
Sample Input
2
16
3
27
7
4357186184021382204544
Sample Output
4
3
1234
题解
求的值 数据范围为1 ≤ p ≤ 10101
本来以为是大数据除法,但大数据除法太复杂,而p的大小范围没超过double,可以直接用double做
double类型 64 15-16 -1.7*10(-308)~1.7*10(308)
long double类型 128 18-19 -1.2*10(-4932)~1.2*10(4932)
#include <iostream>
#include<cmath>
using namespace std;
double num,root;
int main()
{
while(cin>>root>>num)
{
cout<<(int)((pow(num,1.0/root))+0.5)<<endl;
}
return 0;
}