除了著名的高斯算法,你还有什么算法来计算从1加到100?

科技网编2023-03-03 08:143200

一时间可以想到两种。第一种,矩阵法。这个比较容易理解。把加法序列写成1,11,111…这样的下三角单位阵。如果填满矩阵,一共有一万个元素,每个元素是1,那么和是10000。下三角单位阵有大约一半,多出来对角线上100个元素。简单可知和(10000-100)/2 + 100 =5050。第二种,二进制位移法。这个需要对二进制数字有基本理解。首先预估一下序列的和转换为二进制到底有多少数位。和应该是小于10000,转换为二进制为10011100010000,一共14位。先预占14位二进制,并且初始值为0。接下来序列加法会有一百次操作。并且我们知道对一个数位的奇数次操作会吧0至为1,而偶数次操作则不改变数位的值。现在问题转化为这预留的14个0到底经历了奇数次操作还是偶数次操作。末尾代表2的0次幂,经历了50次操作,倒数第二位代表2^1+2^0,这里有34次操作,加上末尾进位导致的25次操作,一共有59次,……,依次类推,可以推得1001110111010。转换为十进制可得5050。第二种算法用一段程序实现要简单很多。

评论区