1. 程式人生 > >洛谷 P3955 圖書管理員【模擬/思維】

洛谷 P3955 圖書管理員【模擬/思維】

bre 輸入輸出 class 輸出 方便 最小 分析 這位 輸入

題目描述

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

輸入輸出格式

輸入格式:

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

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

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

輸出格式:

輸出文件有 q 行,每行包含一個整數,如果存在第 i 個讀者所需要的書,則在第 i 行輸出第 i 個讀者所需要的書中圖書編碼最小的那本書的圖書編碼,否則輸出-1。

輸入輸出樣例

輸入樣例#1: 復制
5 5 
2123 
1123 
23 
24 
24 
2 23 
3 123 
3 124 
2 12 
2 12
輸出樣例#1: 復制
23 
1123 
-1 
-1 
-1 

說明

【數據規模與約定】

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

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

另有 20%的數據,所有讀者的需求碼的長度均為 1。

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

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

【分析】:註意可以直接看成數字,不必字符串。因為給了位數以及範圍,處理起來更加方便。

【代碼】:

技術分享圖片
#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using
namespace std; int a[1000+10],b; int main() { int n,m,l,f; cin>>n>>m; for(int i=1;i<=n;i++) scanf("%d",a+i); sort(a+1,a+n+1); while(m--) { f=-1;//詢問內部初始化 scanf("%d %d",&l,&b); int w = pow(10,l); //截取位數 for(int i=1;i<=n;i++) if(a[i]%w == b) { f=a[i]; break; } printf("%d\n",f); } }
在線查詢

洛谷 P3955 圖書管理員【模擬/思維】