Power of Cryptography
Time Limit: 1000MS | Memory Limit: 30000K | |
Total Submissions: 18049 | Accepted: 9111 |
Description
Current work in cryptography involves (among other things) large prime numbers and computing powers of numbers among these primes. Work in this area has resulted in the practical use of results from number theory and other branches of mathematics once considered to be only of theoretical interest.
This problem involves the efficient computation of integer roots of numbers.
Given an integer n>=1 and an integer p>= 1 you have to write a program that determines the n th positive root of p. In this problem, given such integers n and p, p will always be of the form k to the n th. power, for an integer k (this integer is what your program must find).
This problem involves the efficient computation of integer roots of numbers.
Given an integer n>=1 and an integer p>= 1 you have to write a program that determines the n th positive root of p. In this problem, given such integers n and p, p will always be of the form k to the n th. power, for an integer k (this integer is what your program must find).
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<10
101 and there exists an integer k, 1<=k<=10
9 such that k
n = p.
Output
For each integer pair n and p the value k should be printed, i.e., the number k such that k n =p.
Sample Input
2 16 3 27 7 4357186184021382204544
Sample Output
4 3 1234
Source
解题报告
做了这题我才真正知道贪心的博大精深,也是这题为什么归在POJ的贪心里面了。。。
double的精度不是很高,超出精度的会去掉低位的数。
这题就是贪心的把低位去掉进行运算。。。
12337=4332529576639313702577
12347=4357186184021382204544
12357=4381962969567270546875
可以看出在double型所能表示的精度范围内,它们三个值已经不同了。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
double a,b,c;
while(~scanf("%lf%lf",&a,&b))
{
printf("%.lf\n",pow(b,1/a));
}
return 0;
}