程序员升职记之40倍扩大器

题目:

把INBOX(输入栏)的每一个数都乘以40,然后把结果放进OUTBOX(输出栏)中。

分析:

一般的程序员首先应该想到的是40=32+8,即设原数X,40 * X = 32 * X + 8 * X。但是我们计算到32 * X时(同时也记录下了8 * X),会多计算2 * X 及 16 * X。我曾经也试过利用40 * X = 2 *(16 * X + 4 * X),但是此时也多计算了2 * X 和 8* X。这两种计算方法在游戏中所占的行数相同,计算次数也相同(15行代码,64步运算)。始终无法达到最优。

正确的算法应该是40 * X =(2 * X + 8 * X)* 2 * 2。这样我们之多计算了4 * X。代码优化到了14行,56步计算。

代码:

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值