美文网首页
Python实现“韩信点兵”

Python实现“韩信点兵”

作者: Game0ver | 来源:发表于2019-07-26 12:34 被阅读0次

    题目:

    相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他没次只掠一眼队伍的排尾就知道总人数了。输入包含多组数据,每组数据包含3个非负整数a,b,c,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100。输入到文件结束为止

    样例输入
    2 1 6
    2 1 3

    样例输出
    Case 1: 41
    Case 2: No answer

    思路:

    设总人数为n,则当三人一排时有 n%3 == a, 当五人一排时有 n%5 == b,当七人一排时有 n%7 == c,因此求出同时满足上述三个条件的n即可

    代码:

    import sys
    
    count = 0
    while True:
        num = input()
        if num != "":
            num = num.split()
            a = num[0]
            b = num[1]
            c = num[2]
            count += 1
            if len(num) == 3 and int(a) < 3 and int(b) < 5 and int(c) < 7:
                flag = True
                for i in range(10, 101):
                    if i % 3 == int(a) and i % 5 == int(b) and i % 7 == int(c):
                        print("Case {0}: {1}".format(count, i))
                        flag = False
                        break
    
                if flag:
                    print("Case {0}: No answer".format(count))
    
        else:
            sys.exit()
    

    相关文章

      网友评论

          本文标题:Python实现“韩信点兵”

          本文链接:https://www.haomeiwen.com/subject/llprrctx.html