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 }

 

 这题正确的算法本来应该是贪心,二分+高精度。

见博客http://www.2cto.com/kf/201212/174001.html

posted @ 2013-06-26 16:50  水门  阅读(142)  评论(0编辑  收藏  举报