标签:des style blog class code java
2 16
3 27
7 4357186184021382204544
4 3 1234
题目大意:输入两个数,n,p。求一个整数k,使得k满足kn=p。
大牛代码,膜拜!
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
首先,题目中的数据强度并不弱,这一点确实如题目中所说:“For all such pairs 1<=n<= 200, 1<=p<10101,所以,double型是不能精确地表示出所给数据,但是却能表示出一个近似值。
当向double型变量中存入
4357186184021382204544
然后再输出,得到的是
4357186184021382000000
后六位的值变为了0,这一点和int型变量是有很大区别的。也就是说当存入double型变量的值超出了它的精度表示范围时,将低位的数据截断。
在本题中,如果测试数据为:
7 4357186184021382204544
实际上所处理数据是:
7 4357186184021382000000
拿4357186184021382000000开7次方的结果自然就是1234。
为什么不是1233或者1235呢?
12337=4332529576639313702577
12347=4357186184021382204544
12357=4381962969567270546875
可以看出在double型所能表示的精度范围内,它们三个值已经不同了。
1 #include<cstdio> 2 #include<cmath> 3 4 int main() 5 { 6 int n; 7 double p; 8 while(scanf("%d%lf",&n,&p) != EOF) 9 { 10 printf("%.0lf\n",pow(p,1.0/n)); 11 } 12 return 0; 13 }
(转)poj2109-Power of Cryptography,布布扣,bubuko.com
(转)poj2109-Power of Cryptography
标签:des style blog class code java
原文地址:http://www.cnblogs.com/youdiankun/p/3716329.html