新手·ing 发表于 2017-4-2 12:24:43

Python:每日一题 16(答题领鱼币)

题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海

中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样

做的,问海滩上原来最少有多少个桃子?

程序分析:无。

如果你认真答题,会得到鱼币奖励!!!
                      如果你认真答题,会得到鱼币奖励!!!
                                              如果你认真答题,会得到鱼币奖励!!!

欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788 @lumber2388779   
{:10_298:}点我上车 {:10_298:}   

**** Hidden Message *****

新手·ing 发表于 2017-4-2 12:25:18

@lumber2388779 @ooxx7788 @冬雪雪冬 @jerryxjr1220
来吧!

新手·ing 发表于 2017-4-2 13:26:45

@gopythoner

哨子1122 发表于 2017-4-2 14:25:41

答案

冬雪雪冬 发表于 2017-4-2 14:36:00

倒着推,最后最少剩余4个,且应该是4的倍数,就这样一一的试。
x = 4
while True:
    y = x
    for i in range(5):
      y = y * 5 / 4 + 1
      if (y -1) % 5 != 0:
            break
    else:
      print('海滩上原来最少有%d个桃子'%int(y))
      break
    x += 4

新手·ing 发表于 2017-4-2 14:42:56

冬雪雪冬 发表于 2017-4-2 14:36
倒着推,最后最少剩余4个,且应该是4的倍数,就这样一一的试。

{:10_264:}不给版主鱼币奖励

冬雪雪冬 发表于 2017-4-2 14:45:17

新手·ing 发表于 2017-4-2 14:42
不给版主鱼币奖励

嗯, 不用了。{:5_95:}

新手·ing 发表于 2017-4-2 14:46:57

冬雪雪冬 发表于 2017-4-2 14:45
嗯, 不用了。

{:10_264:}版主还要支持哦

冬雪雪冬 发表于 2017-4-2 14:50:45

新手·ing 发表于 2017-4-2 14:46
版主还要支持哦

一定的

18813034116 发表于 2017-4-2 18:33:53

from __future__ import division
i=6
while 1:
    n=5
    y=0
    num=i
    while n!=0:
      if (num-1) % 5 == 0:
            num=(num-1) * 4/5
            y+=1
      n-=1
    if y == 5:
      print i
      break
    else:
      i+=1

elbert 发表于 2017-4-2 18:54:55

def f(n):
       
        if n == 1:
                return 6
        else:
                return (f(n-1)*5+1)

for i in range(1,6):
        print ("第%s天:%s个桃子" % (6-i, f(i)))

ooxx7788 发表于 2017-4-2 19:53:35

elbert 发表于 2017-4-2 18:54


天才程序员用递归,厉害!

18813034116 发表于 2017-4-2 21:23:50

elbert 发表于 2017-4-2 18:54


这个问题好像不能用递归,因为当桃子最少的情况下,最后一只猴子分桃子的数量是不确定的,并不是6

elbert 发表于 2017-4-2 21:25:23

18813034116 发表于 2017-4-2 21:23
这个问题好像不能用递归,因为当桃子最少的情况下,最后一只猴子分桃子的数量是不确定的,并不是6

重新写了下
def f(m):
        n = m
        i = 0
        while (n-1)%5 == 0:
                n = (n-1)*4//5
                i = i+1
                if i == 5:
                        return (m)

j = 2
while 1 :
        if f(j) != None :
                print ("最少桃子数是:" + str(j))
                break
        else :
                j = j+1

pyon 发表于 2017-4-2 21:25:52

支持

elbert 发表于 2017-4-2 21:27:04

ooxx7788 发表于 2017-4-2 19:53
天才程序员用递归,厉害!

理解错了,答案不正确。尴尬了{:10_250:}

18813034116 发表于 2017-4-2 21:29:29

elbert 发表于 2017-4-2 21:25
重新写了下

可以,老哥稳!

gaoqi1226 发表于 2017-4-2 21:31:53

好难哦

eshuex 发表于 2017-4-2 22:43:47

看看

eshuex 发表于 2017-4-2 22:44:54

看看看看
页: [1] 2 3 4 5 6 7
查看完整版本: Python:每日一题 16(答题领鱼币)