本文共 2460 字,大约阅读时间需要 8 分钟。
为了解决这个问题,我们需要根据参赛者的排名和查询结果,确定他们应该获得的奖品。参赛者根据排名获得不同的奖品:冠军获得“神秘大奖”,排名为素数的获得“小黄人”,其他人获得巧克力。如果查询的ID不在排名中,则输出“耍我呢?”。如果ID已经被查过,则输出“不能多吃多占”。
import java.util.Scanner;public class BasicalLevel1059CproCompition { public static void main(String[] args) { Scanner in = new Scanner(System.in); int N = Integer.parseInt(in.nextLine()); String[] a = new String[N]; for (int i = 0; i < N; i++) { a[i] = in.nextLine(); } int K = Integer.parseInt(in.nextLine()); boolean[] processed = new boolean[N]; for (int i = 0; i < K; i++) { String m = in.nextLine(); int index = -1; boolean found = false; for (int j = 0; j < N; j++) { if (m.equals(a[j])) { found = true; index = j; break; } } if (!found) { System.out.println(m + ": Are you kidding?"); } else { if (processed[index]) { System.out.println(m + ": Checked"); } else { if (index == 0) { System.out.println(m + ": Mystery Award"); } else { int rank = index + 1; if (isPrime(rank)) { System.out.println(m + ": Minion"); } else { System.out.println(m + ": Chocolate"); } } processed[index] = true; } } } } private static boolean isPrime(int i) { if (i <= 1) { return false; } if (i == 2) { return true; } if (i % 2 == 0) { return false; } for (int j = 3; j <= Math.sqrt(i); j += 2) { if (i % j == 0) { return false; } } return true; }} Scanner读取输入数据,首先读取参赛人数N,然后读取N个参赛者的ID。a中。isPrime函数用于判断一个数是否为素数,用于判断排名是否为素数以决定奖品类型。这个方法确保了每个查询的ID都能得到正确的奖品判断,并且处理了重复查询和不存在的ID情况。
转载地址:http://dnnbz.baihongyu.com/