您的位置:首页 > 其它

uva 113 Power of Cryptography

2013-09-24 09:57 323 查看
二分法,不多说了,一开始在纠结大数字该怎么办,后来发现32bit环境下double最大值是1.7e+308,完全够用了。

#include <stdio.h>
#include <float.h>
#include <math.h>

int func(double n, double p)
{
int l, r, m;
double v;

l = 1;
r = 1000000000;
while(1)
{
m = (l+r)/2;
v = pow(m, n);
if(fabs(v-p)< 1e-9)
return m;
else
{
if(v > p)
r = m+1;
else
l = m-1;
}
}
}

int main(void)
{
double n, p;

while(scanf("%lf %lf", &n, &p) != EOF)
{
printf("%d\n", func(n,p));
}

return 0;
}


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  acm uva