这里有一大堆桃子。这是5个猴子的公共财产。它们要平均分配。第一只猴子来了。它左等右等,别的猴子都不来,便动手把桃子均分成5堆,还剩了1个。它觉得自己辛苦了,当之无愧地把这1个无法分配的桃子吃掉,又拿走了5堆中的1堆。第二只猴子来了。它不知道刚才发生的情况,又把桃子均分成5堆,可还是多了1个。它吃了这1个,拿1堆走了。以后,每个猴子来了,都是如此办理。请你写一段python程序,计算原来至少有多少桃子?并且猴子的数量设为控制台输入。
我写的程序如下:
import time
def calculate_peach(monkey_num):
x = 1
while True:
count = x * monkey_num + 1
for _ in range(monkey_num - 1):
if count % (monkey_num - 1) == 0:
count = (count // (monkey_num - 1)) * monkey_num + 1
else:
count = 0
break
if count != 0:
return count
x += 1
# 主程序
monkey_num = int(input("请输入猴子的数量:"))
start_time = time.time()
peach = calculate_peach(monkey_num)
end_time = time.time()
print("海滩上原来最少有%d个桃子" % peach)
total_time = end_time - start_time
print("程序运行时长:", total_time)
通过测试,发现如何猴子数量达到10个,需要很长时间才能给出计算结果。大家有没有能提高运算效率的算法,欢迎分享一下。