図書管理者(読者ニーズコードを利用して本を調べる)

9360 ワード

図書館には本ごとに図書コードがあり、図書を迅速に検索するために使用することができます。この図書コードは正の整数です。本を借りた読者一人一人の手には需要コードがあり、この需要コードも正の整数です。もし1冊の本の図書コードがちょうど読者の需要コードで終わるならば、この本はこの読者が必要とするものです。Dさんは図書館の管理人になったばかりで、彼女は図書館のすべての本の図書のコードを知っていて、今、すべての読者に対して、彼が必要とする本の中で図書のコードが一番小さい本を要求して、もし彼が必要とする本がなければ、-1を出力してください。


入力説明:入力された最初の行は、2つの正の整数nとqを含み、図書館の本の数と読者の数を表すスペースで区切られています。次のn行は、各行に正の整数が含まれており、図書館のある本の図書コードを表しています。次のq行は、各行に2つの正の整数を含み、1つのスペースで分けられ、1つ目の正の整数は図書館の読者の需要コードの長さを表し、2つ目の正の整数は読者の需要コードを表す。


出力記述:出力はq行あり、各行には整数が含まれており、i番目の読者が必要とする本が存在する場合、i番目の読者が必要とする本の中で図書コードが最も小さい本の図書コードがi行に出力され、そうでなければ−1が出力される。

import java.util.*;
public class Main{
    public static void main(String [] args){
        Scanner sc = new Scanner(System.in);
        int n=sc.nextInt();
        int q=sc.nextInt();
        ArrayList<Integer> arr = new ArrayList<Integer>();// ArrayList 
        for (int i = 0;i < n;i++){
            arr.add(sc.nextInt()); // 
        }
        Collections.sort(arr); // 

        for (int i = 0;i < q;i++){
            int len = sc.nextInt(); // 
            int reader_code = sc.nextInt(); // 
            int num = (int)Math.pow(10,len); //(int)Math.pow(x,y) x ,y , x y , int 
            boolean found = false;

            // , , 
            for (int j = 0;j < n;j++){
                if (arr.get(j) % num != reader_code )
                    continue;
                System.out.println(arr.get(j));
                found = true;
                break;
            }
            // -1
            if (!found)
                System.out.println("-1");
        }
    }
}


入力と出力の結果:

5 5( n q)
2123( )
1123
23
24
24
2 23( )
23( )
3 123
1123( )
3 124
-1( )
2 12
-1( )
2 12
-1( )