蓝桥杯——344图书管理员

Posted on 2024-03-18 19:45  奇诺qwq  阅读(15)  评论(0编辑  收藏  举报

 

 

法一使用取模运算

  1. 对于每本书的图书编码(bookCode),我们需要判断其是否以读者的需求码结尾。
  2. 首先,将需求码的长度作为指数,使用Math.pow(10, demandLength)来得到一个以需求码长度为指数的基数。
  3. 然后,将书的图书编码与这个基数进行取模运算,即bookCode % Math.pow(10, demandLength)。
  4. 如果取模的结果等于需求码(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");
                }
            }
        }
    }
}