poj 2109 Power of Cryptography (double 精度)
题目:http://poj.org/problem?id=2109
题意:求一个整数k,使得k满足kn=p。
思路:exp()用来计算以e为底的x次方值,即ex值,然后将结果返回。log是自然对数,就是e为底计算的。换底公式 log<a>(b) = log<c>(b) / log<c>(a)。
float 的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;
double 的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308
1 #include<stdio.h> 2 #include<math.h> 3 int main() 4 { 5 double n,p; 6 while(~scanf("%lf%lf",&n,&p)) 7 { 8 printf("%g\n",pow(p,1.0/n)); 9 } 10 return 0; 11 }
这题正确的算法本来应该是贪心,二分+高精度。