有一个投篮游戏。球场有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); } } }