法一使用取模运算
- 对于每本书的图书编码(bookCode),我们需要判断其是否以读者的需求码结尾。
- 首先,将需求码的长度作为指数,使用Math.pow(10, demandLength)来得到一个以需求码长度为指数的基数。
- 然后,将书的图书编码与这个基数进行取模运算,即bookCode % Math.pow(10, demandLength)。
- 如果取模的结果等于需求码(demandCode),则说明书的图书编码以读者的需求码结尾,符合条件。
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n =sc.nextInt(); int q = sc.nextInt(); int[] s1 = new int[n]; int[] s2 = new int[2*q]; for (int i = 0; i < n; i++) { s1[i]=sc.nextInt(); } Arrays.sort(s1); for (int i = 0; i < 2*q; i++) { s2[i]=sc.nextInt(); } for (int i = 0; i < 2*q; i+=2) { int j=0; int f=-1; for (j = 0; j < n; j++) { int b=(int)Math.pow(10,s2[i]); if((s1[j]%b)==s2[i+1]){ f=s1[j]; System.out.println(f); break; } } if(j==n&&f==-1){ System.out.println("-1"); } } } }
法二:使用String1.endsWith(String2)判断是否以读者编码结尾
import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =new Scanner(System.in); int n =sc.nextInt(); int q =sc.nextInt(); int[] s1 = new int[n]; int[] s2 = new int[2*q]; for (int i = 0; i < n; i++) { s1[i]=sc.nextInt(); } for (int i = 0; i < 2*q; i++) { s2[i] = sc.nextInt(); } Arrays.sort(s1);//升序排序 for (int i = 1; i < 2*q; i+=2) {//遍历每一位读者的编码 for (int j = 0; j < n; j++) {//遍历所有图书编码 //判断s1[j]是否以s2[i]结尾(注意:整形转化为String) if((String.valueOf(s1[j])).endsWith(String.valueOf(s2[i]))){ System.out.println(s1[j]); break; } else if(j==n-1) {//将所有图书遍历完后返回-1 System.out.println("-1"); } } } } }