题意:求n^k的前三位和后三位。2<=n<2^31,1<=k<=10^7
分析:
- 后三位。求后三位比较简单,直接二分幂对1000求余即可。
- 前三位。对于给出的数据来说,不可能直接求,因此可以保留一定的位数以确保精度足够。此题应保留 3+lg(k) 位。然而,对于题给 k 的最大情况,要保留 10 位,如果用64位整数来存的话,中间过程肯定会溢出。想到 double 来保存数据,看来测试数据显然是加强过了的,不会让你轻易过的。
对于 long long 来说,保留 9 位(也就是进行除法),就是准确的保留 9 位;而对于 double 来说,保留 9 位,相当于小数点整体向左移,并没有将其超过 9 位的部分舍去,而是在小数点右边,进行乘法的时候也就保证了精度。