2706:麦森数 百炼oj

点击打开链接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.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值