【华为OD统一考试B卷 】数字游戏 python

小明玩一个游戏。
系统发1 + n 1+n1+n张牌,每张牌上有一个整数。
第一张给小明,后n nn张按照发牌顺序排成连续的一行。
需要小明判断,后n nn张牌中,是否存在连续的若干张牌,其和可以整除小明手中牌上的数字。
输入描述
输入数据有多组,每组输入数据有两行,输入到文件结尾结束。
第一行有两个整数n nn和m mm,空格隔开。m mm代表发给小明牌上的数字。
第二行有n nn个数,代表后续发的n nn张牌上的数字,以空格隔开。
输出描述
对每组输入,如果存在满足条件的连续若干张牌,则输出1 11;否则,输出0 00。
备注
1 ≤ n ≤ 1000 1 \leq n \leq 10001≤n≤1000
1 ≤ 牌上的整数 ≤ 400000 1 \leq 牌上的整数 \leq 4000001≤牌上的整数≤400000
输入的数组,不多于1000 10001000
用例确保输入都正确,不需要考虑非法情况。
样例
输入
6 7 2 12 6 3 5 5 10 11 1 1 1 1 1 1 1 1 1 1
1
2
3
4
输出
1 0
1
2
说明
两组输入。第一组小明牌的数字为7 77,再发了6 66张牌。第1 、 2 1、21、2两张牌教字和为14 1414,可以整除7 77,输出1 11,第二组小明牌的数字为11 1111,再发了10 1010张牌,这10 1010张牌数字和为10 1010,无法整除11 1111,输出0 00。
代码实现

while True:
    try:
        n,m = map(int,input().split())
        nums = [int(x) for x in input().split(" ")]
        sum_value = 0
        flag = False
        remainders = [0 for x in range(m)]
        remainders[0] = 1
        for i in range(n):
            sum_value += nums[i]
            sum_value %= m
            if(remainders[sum_value] != 0):
                flag = True
                break
            remainders[sum_value] +=1
        if flag:
            print(1)
        else:
            print(0)
    except:
        break

你可能感兴趣的:(python,华为od,游戏)