有一个投篮游戏。球场有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)
输出游戏的结果
10 5 0 21 53 41 53
4
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
while(in.hasNext()){
int end = -1;
int p = in.nextInt();
int n = in.nextInt();
int[] x = new int[n];
for(int i = 0;i < n;i++){
x[i] = in.nextInt();
}
int[] judge = new int[p];
for(int i = 0;i < n;i++){
if(judge[x[i] % p] == 1){
end = i + 1;
break;
}
else
judge[x[i] % p] = 1;
}
System.out.println(end);
}
}
}
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int p = sc.nextInt();
int n = sc.nextInt();
sc.nextLine();
int[] ball = new int[n];
for(int i=0;i<n;i++){
ball[i]=Integer.parseInt(sc.nextLine().split(" ")[0]);
}
int[] basket =new int[p];
int res=-1;
for(int i=0;i<ball.length;i++){
int index = ball[i]%p;
if(basket[index]==1){
res = i+1;
break;
}
basket[index]=1;
}
System.out.println(res);
}
}
}
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int p = sc.nextInt();
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < p; i ++ ) {
map.put(i, 0);
}
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i ++ ) {
arr[i] = sc.nextInt();
}
int res = - 1;
for (int i = 0; i < n; i ++ ) {
int num = arr[i] % p;
if(map.get(num) == 1) {
res = i + 1;
break;
}
map.put(num, 1);
}
System.out.println(res);
}
}
}