点击打开链接http://bailian.openjudge.cn/practice/2706/
题目:求麦森数,要去打印有多少位,另外求出后500位,不足500位高位补0。
可将此题目分解为以下几个问题:
一、求出有多少位
分析可知,2的幂次方,结果可为:2,4,6,8,因此可求出2的幂次方有多少位既是2的幂次方减1有多少位,可利用对数恒等式计算,
int(P*log10(2) + 1),注意取整。
二、怎么计算一个数的幂,暂时两种方法?
(1):移位计算,x<<t.将数x左移t位,等于乘以2的t次幂。(像4,8,16等的次幂均可通过移位计算)。
(2):写成一共函数计算,循环多次。
三、保存后面500位的结果。
可以压缩,也可以不压缩,建议压缩。压缩时应该注意int 表示的范围在32767所以每次计算2的14次方,ans数组中每个元素可以保存5位数,因此相邻元素之间的进制变为100000.