题目描述
相传韩信将军才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排,五人一排,七人一排的变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含三个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或者报告无解)。已知总人数不小于10,不超过100。
输入
输入包含多组数据,每组一行三个整数a,b,c
输出
输出每行对应的总人数的最小值,若无解则输出“No answer”
样例输入
2 1 6 2 1 3
样例输出
41 No answer
解法
使用中国剩余定理,证明略。
代码如下:
Han = input()
while Han != '':
a, b, c = Han.split()
d = eval('({}*70 + {}*21 + {}*15) % 105'.format(a,b,c))
if 10 <= d <= 100:
print(d)
else:
print('No answer')
Han = input()
这篇博客探讨了著名的韩信点兵问题,即如何通过士兵以3、5、7人为一排变换队形来确定总人数。文章提到,这个问题可以通过中国剩余定理来解决,并给出了代码实现。输入为每种队形排尾的人数,程序会计算出满足条件的最小总人数。对于无解的情况,程序会输出Noanswer。
&spm=1001.2101.3001.5002&articleId=123911888&d=1&t=3&u=d77acd939bf240d78a8e0d43c3191506)
3018

被折叠的 条评论
为什么被折叠?



