python_N猴子偷桃
#!/usr/bin/python# coding=utf-8# __author__ = 'cy'# 输入猴子数量# monkey = str(input("Input monkey num:"))monkey = 5# 定义桃子总数函数def show(n):# 从1开始,方便变量赋值for i in range(1, monkey + 1):t = (n - 1) / monkey# 当前猴
·
#!/usr/bin/python
# coding=utf-8
# __author__ = 'cy'
# 输入猴子数量
# monkey = str(input("Input monkey num:"))
monkey = 4
# 定义桃子总数函数
def show(n):
for i in range(1, monkey + 1):
# 当前猴子应该带走的桃子数
t = (n - 1) / monkey
# 格式化输出
print('%d. 桃子有%d个, 第%i只猴吃1个, 拿走%s个。' % (i, n, i, int(t)))
n = (monkey - 1) * t # 前一只猴子带走一份桃子后,剩余的桃子总数
# n=t # 上一个猴子拿的桃子数量,不代表剩余的桃子数量
# 定义功能函数
def fun():
# 从1开始
k = 1
while True:
t = k
# 循环次数
for i in range(monkey - 1):
# 当前猴子应拿走桃子数为tc,吃之前总量应为 monkey * tc + 1,
# 前一个猴子拿走桃子数为tp,则剩下桃子数为 (monkey-1) * tp = monkey * tc + 1
t = monkey * t + 1
if t % (monkey - 1): break
t /= (monkey - 1)
# 位于else的子句将执行,即找到符合条件最小整数
else:
print('如果猴子%d只:' % monkey)
print('桃子总数要%d个:' % (monkey * t + 1))
show(monkey * t + 1)
break
k += 1
fun()
Q&A
- t = monkey * t + 1 代表第n只猴子在吃拿前桃子的总数
- t % (monkey - 1)代表第n-1只猴子吃拿后,剩余的桃子数,判断 当前t 是否满足条件t !=0–>t不满足条件,则跳出循环,尝试下一个k
- t /= (monkey - 1) :t满足条件,往下查看是否满足序号2 条件
- print(‘桃子总数要%d个:’ % (monkey * t + 1)) 能否把变量替换成t?
- fun() 函数实现什么功能?
答:不断测试t是否可以整除monkey-1,然后得出最小的t
疑问?? 要是t 一直都不满足条件咋整
更多推荐



所有评论(0)