Python:每日一题 16(答题领鱼币)
题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样
做的,问海滩上原来最少有多少个桃子?
程序分析:无。
如果你认真答题,会得到鱼币奖励!!!
如果你认真答题,会得到鱼币奖励!!!
如果你认真答题,会得到鱼币奖励!!!
欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788 @lumber2388779
{:10_298:}点我上车 {:10_298:}
**** Hidden Message *****
@lumber2388779 @ooxx7788 @冬雪雪冬 @jerryxjr1220
来吧! @gopythoner 答案 倒着推,最后最少剩余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 冬雪雪冬 发表于 2017-4-2 14:36
倒着推,最后最少剩余4个,且应该是4的倍数,就这样一一的试。
{:10_264:}不给版主鱼币奖励 新手·ing 发表于 2017-4-2 14:42
不给版主鱼币奖励
嗯, 不用了。{:5_95:} 冬雪雪冬 发表于 2017-4-2 14:45
嗯, 不用了。
{:10_264:}版主还要支持哦 新手·ing 发表于 2017-4-2 14:46
版主还要支持哦
一定的 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 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))) elbert 发表于 2017-4-2 18:54
天才程序员用递归,厉害! elbert 发表于 2017-4-2 18:54
这个问题好像不能用递归,因为当桃子最少的情况下,最后一只猴子分桃子的数量是不确定的,并不是6 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 支持
ooxx7788 发表于 2017-4-2 19:53
天才程序员用递归,厉害!
理解错了,答案不正确。尴尬了{:10_250:} elbert 发表于 2017-4-2 21:25
重新写了下
可以,老哥稳! 好难哦 看看 看看看看