题目是这样的:神奇岛上的神猴以仙桃为食,每天中午,每只身后各吃一个仙桃;到了晚上,岛上的神猴和仙桃都能克隆出一个自己。如果第1天上午有2000只神猴和50000个仙桃,那么到了第几天下午,全部仙桃将被吃光?
如果用数学的方法算比较困难,需要消耗一些时间。但是如果用python进行一次一次的递推,则会方便一些。
代码如下:
shen_hou = 2000 # 神猴的数量
xian_tao = 50000 # 仙桃的数量
ci_shu = 0
shang_xia = ""
while xian_tao >= 0:
ci_shu += 1
if ci_shu % 2 == 1: # 下午
shang_xia = "下午"
xian_tao = xian_tao - shen_hou
print(str(int((ci_shu + 1) / 2)) + shang_xia, shen_hou, xian_tao)
else: # 上午
shang_xia = "上午"
xian_tao *= 2
shen_hou *= 2 # 分别×2
print("") # 每一天分隔一下
print(str(int((ci_shu + 2) / 2)) + shang_xia, shen_hou, xian_tao)
运行的结果:
1下 2000 48000
2上 4000 96000
2下 4000 92000
3上 8000 184000
3下 8000 176000
4上 16000 352000
4下 16000 336000
5上 32000 672000
5下 32000 640000
6上 64000 1280000
6下 64000 1216000
7上 128000 2432000
7下 128000 2304000
8上 256000 4608000
8下 256000 4352000
9上 512000 8704000
9下 512000 8192000
10上 1024000 16384000
10下 1024000 15360000
11上 2048000 30720000
11下 2048000 28672000
12上 4096000 57344000
12下 4096000 53248000
13上 8192000 106496000
13下 8192000 98304000
14上 16384000 196608000
14下 16384000 180224000
15上 32768000 360448000
15下 32768000 327680000
16上 65536000 655360000
16下 65536000 589824000
17上 131072000 1179648000
17下 131072000 1048576000
18上 262144000 2097152000
18下 262144000 1835008000
19上 524288000 3670016000
19下 524288000 3145728000
20上 1048576000 6291456000
20下 1048576000 5242880000
21上 2097152000 10485760000
21下 2097152000 8388608000
22上 4194304000 16777216000
22下 4194304000 12582912000
23上 8388608000 25165824000
23下 8388608000 16777216000
24上 16777216000 33554432000
24下 16777216000 16777216000
25上 33554432000 33554432000
25下 33554432000 0
26上 67108864000 0
26下 67108864000 -67108864000
很明显,在第二十五天的下午时,仙桃被吃光了,因此答案为25天。