図書管理者(読者ニーズコードを利用して本を調べる)
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( )