Noip2017 圖書管理員——普及組

原題地址(點我)

題目描述

圖書館中每本書都有一個圖書編碼,能夠用於快速檢索圖書,這個圖書編碼是一個 正整數。 每位借書的讀者手中有一個需求碼,這個需求碼也是一個正整數。若是一本書的圖 書編碼剛好以讀者的需求碼結尾,那麼這本書就是這位讀者所須要的。 小 D 剛剛當上圖書館的管理員,她知道圖書館裏全部書的圖書編碼,她請你幫她寫 一個程序,對於每一位讀者,求出他所須要的書中圖書編碼最小的那本書,若是沒有他 須要的書,請輸出-1。ide

輸入輸出格式

輸入格式:編碼

 

輸入文件的第一行,包含兩個正整數 n 和 q,以一個空格分開,分別表明圖書館裏 書的數量和讀者的數量。spa

接下來的 n 行,每行包含一個正整數,表明圖書館裏某本書的圖書編碼。code

接下來的 q 行,每行包含兩個正整數,以一個空格分開,第一個正整數表明圖書館 裏讀者的需求碼的長度,第二個正整數表明讀者的需求碼。blog

 

輸出格式:排序

 

輸出文件有 q 行,每行包含一個整數,若是存在第 i 個讀者所須要的書,則在第 i 行輸出第 i 個讀者所須要的書中圖書編碼最小的那本書的圖書編碼,不然輸出-1。get

 

輸入輸出樣例

Sample Input

5 5 
2123 
1123 
23 
24 
24 
2 23 
3 123 
3 124 
2 12 
2 12

Sample Output

23 
1123 
-1 
-1 
-1 

說明

【數據規模與約定】io

對於 20%的數據,1 ≤ n ≤ 2。event

另有 20%的數據,q = 1。class

另有 20%的數據,全部讀者的需求碼的長度均爲 1。

另有 20%的數據,全部的圖書編碼按從小到大的順序給出。

對於 100%的數據,1 ≤ n ≤ 1,000,1 ≤ q ≤ 1,000,全部的圖書編碼和需求碼均 不超過 10,000,000。

 

這題,排不排序都無所謂,枚舉便可

就這樣寫↓

 

 1 #include <cstdio>
 2 using namespace std;
 3 int n,q;
 4 int ans,noww;
 5 int a[1001],b[1001],c[1001];
 6 int main()
 7 {
 8     //freopen("librarian.in","r",stdin);
 9     //freopen("librarian.out","w",stdout);
10      scanf("%d%d",&n,&q);
11      for(int i=1;i<=n;i++)
12          scanf("%d",&a[i]);
13      for(int i=1;i<=q;i++)
14          scanf("%d%d",&b[i],&c[i]);
15      for(int i=1;i<=q;i++)
16     {
17           ans=-1;noww=1;
18           for(int j=1;j<=n;j++)
19         {
20             while(b[i]>0)
21             {
22                   noww*=10;
23                   b[i]--;
24             }
25             if(a[j]%noww==c[i])
26               if(ans==-1)
27                   ans=a[j];
28             else
29             if(ans>a[j])
30                 ans=a[j];
31           }
32           printf("%d\n",ans);
33       }
34       return 0;
35 }
librarian
相關文章
相關標籤/搜索