首页 > 试题广场 >

投篮游戏

[编程题]投篮游戏
  • 热度指数:12602 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个投篮游戏。球场有p个篮筐,编号为0,1...,p-1。每个篮筐下有个袋子,每个袋子最多装一个篮球。有n个篮球,每个球编号xi 。规则是将数字为xi 的篮球投到xi 除p的余数为编号的袋里。若袋里已有篮球则球弹出游戏结束输出i,否则重复至所有球都投完。输出-1。问游戏最终的输出是什么?

输入描述:
第一行两个整数p,n(2≤p,n≤300)。p为篮筐数,n为篮球数。接着n行为篮球上的数字xi(0≤xi≤1e9)


输出描述:
输出游戏的结果
示例1

输入

10 5
0
21
53
41
53

输出

4
def bastket(p,n,x):
    bag=[0 for i in range(p)]
    for i in range(n):
        num=x[i]%p#余数
        if bag[num]==0:#若袋子里还没有篮球,则数量置为1
            bag[num]=1
        else:#若已有篮球,则输出该球的编号
            return i+1
    return -1#所有球都投完,则输出-1

while 1:
    try:
        p,n=list(map(int,input().split()))
        x=[int(input()) for i in range(n)]
        print(bastket(p,n,x))
    except:
        break

发表于 2018-08-17 14:49:10 回复(0)
while True:
    try:
        p,n=map(int,raw_input().split())
        x=[]
        flag=-1
        for i in range(n):
            x.append(int(raw_input().split()[0]))
        xx=[i%p for i in x]
        if set(xx)==xx:
            flag=-1
        else:
            for j in range(1,n):
                if xx[j] in xx[:j]:
                    flag=j+1
                    break
        print flag
    except:
        break
编辑于 2016-08-20 20:35:03 回复(0)