在问题分析中已经将所需麦子的总数抽象为数学公式
∑
i
=
1
64
2
i
−
1
\sum_{i=1}^{64} {2^{i-1}}
∑i=1642i−1,现在只要考虑如何设计算法实现累加和即可。显然,可采用循环结构,每循环一次就实现一次累加,总共循环64次可获得累加和。
4.确定程序框架
程序流程图如图所示。
5.完整的程序
根据上面的分析,编写程序如下:
%%time
# 舍罕王的失算if __name__=="__main__":# 使用循环求累加和
i =1sum=0.0while i <=64:sum=sum+2**(i-1)# print("sum" , i , "=" , sum)
i +=1print("国王总共需要赏赐给宰相的麦子数为:\n%f\n"%sum)# 打印结果
国王总共需要赏赐给宰相的麦子数为:
18446744073709551616.000000
CPU times: user 110 µs, sys: 40 µs, total: 150 µs
Wall time: 146 µs