日更成长营自学编程Python

自学Python:国王给象棋发明者的奖励

2021-11-29  本文已影响0人  小强聊成长

相传国际象棋是古印度舍罕王的宰相达依尔发明的。舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐。这位聪明的宰相指着8×8共64格的象棋棋盘说:陛下,请您赏给我一些麦子吧,就在棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依次放完棋盘上的64格,我就感激不尽了。舍罕王让人扛来一袋麦子,他要兑现他的许诺。请编程求出国王总共需要将多少麦子赏赐给他的宰相。

这就是个经典的复利的故事,算法很简单,棋盘的第1格中放1粒,第2格放2粒,第3格放4粒,以后每一格都比前一格增加一倍,依次放完棋盘上的64格。现在用一个复利公式很容易就计算出来了。那用python代码试着计算一下,一共是多少?

下面直接上代码:

########################

if __name__=="__main__":

    # 使用循环求累加和

    i = 1

    zongshu = 0.0

    while i <= 64:

        zongshu = zongshu + 2**(i-1)

        print("第" , i ,'格需要给的总数', "=" , int(zongshu))

        i += 1

    print("国王总共需要赏赐给宰相的麦子数为:\n%f\n" %zongshu)

########################

执行结果如下:

第 1 格需要给的总数 = 1

第 2 格需要给的总数 = 3

第 3 格需要给的总数 = 7

第 4 格需要给的总数 = 15

第 5 格需要给的总数 = 31

第 6 格需要给的总数 = 63

第 7 格需要给的总数 = 127

第 8 格需要给的总数 = 255

第 9 格需要给的总数 = 511

第 10 格需要给的总数 = 1023

第 11 格需要给的总数 = 2047

第 12 格需要给的总数 = 4095

第 13 格需要给的总数 = 8191

第 14 格需要给的总数 = 16383

第 15 格需要给的总数 = 32767

第 16 格需要给的总数 = 65535

第 17 格需要给的总数 = 131071

第 18 格需要给的总数 = 262143

第 19 格需要给的总数 = 524287

第 20 格需要给的总数 = 1048575

第 21 格需要给的总数 = 2097151

第 22 格需要给的总数 = 4194303

第 23 格需要给的总数 = 8388607

第 24 格需要给的总数 = 16777215

第 25 格需要给的总数 = 33554431

第 26 格需要给的总数 = 67108863

第 27 格需要给的总数 = 134217727

第 28 格需要给的总数 = 268435455

第 29 格需要给的总数 = 536870911

第 30 格需要给的总数 = 1073741823

第 31 格需要给的总数 = 2147483647

第 32 格需要给的总数 = 4294967295

第 33 格需要给的总数 = 8589934591

第 34 格需要给的总数 = 17179869183

第 35 格需要给的总数 = 34359738367

第 36 格需要给的总数 = 68719476735

第 37 格需要给的总数 = 137438953471

第 38 格需要给的总数 = 274877906943

第 39 格需要给的总数 = 549755813887

第 40 格需要给的总数 = 1099511627775

第 41 格需要给的总数 = 2199023255551

第 42 格需要给的总数 = 4398046511103

第 43 格需要给的总数 = 8796093022207

第 44 格需要给的总数 = 17592186044415

第 45 格需要给的总数 = 35184372088831

第 46 格需要给的总数 = 70368744177663

第 47 格需要给的总数 = 140737488355327

第 48 格需要给的总数 = 281474976710655

第 49 格需要给的总数 = 562949953421311

第 50 格需要给的总数 = 1125899906842623

第 51 格需要给的总数 = 2251799813685247

第 52 格需要给的总数 = 4503599627370495

第 53 格需要给的总数 = 9007199254740991

第 54 格需要给的总数 = 18014398509481984

第 55 格需要给的总数 = 36028797018963968

第 56 格需要给的总数 = 72057594037927936

第 57 格需要给的总数 = 144115188075855872

第 58 格需要给的总数 = 288230376151711744

第 59 格需要给的总数 = 576460752303423488

第 60 格需要给的总数 = 1152921504606846976

第 61 格需要给的总数 = 2305843009213693952

第 62 格需要给的总数 = 4611686018427387904

第 63 格需要给的总数 = 9223372036854775808

第 64 格需要给的总数 = 18446744073709551616

国王总共需要赏赐给宰相的麦子数为:

18446744073709551616.000000

最后的总数非常恐怖,即使把国家所有的麦子拿过来,都还不够。

________________END______________

上一篇 下一篇

猜你喜欢

热点阅读