python解决一道数学问题

题目是这样的:神奇岛上的神猴以仙桃为食,每天中午,每只身后各吃一个仙桃;到了晚上,岛上的神猴和仙桃都能克隆出一个自己。如果第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天。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值