题解 P3955 【图书管理员】

· · 题解

本蒟蒻第一篇题解 大佬勿喷

为了庆祝第一次发题解 本蒟蒻决定多唠叨几句QWQ

本题本蒟蒻认为是纯模拟 取余判断

sort大法保证最小 找到输出+break

算了不废话了上代码!

#include<iostream>
#include<algorithm>
using namespace std;
const int N=100005,mod[11]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
//神奇数组 作用到后面自行理解QwQ 
long long a[N],b[N][2];//a是图书编码,b[][0]是位数,b[][1]是需求码 
bool flag;//记录是否找到 
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=0;i<n;i++)cin>>a[i];//输入图书编码
    sort(a,a+n);/*c++自带STL排序QwQ 
                编码从小到大排列*/ 
    for(int i=0;i<m;i++)cin>>b[i][0]>>b[i][1];//输入位数及需求码
    for(int i=0;i<m;i++){
        flag=0;//更新标记 
        for(int j=0;j<n;j++){
            if(a[j]%mod[b[i][0]]==b[i][1]/*如果后位数位一样*/){
                cout<<a[j];//输出 
                //因为是排序好的所以一定最小 
                flag=1; //找到标记为1 
                break;//找到就退出循环 
            }
        }
        if(!flag)cout<<-1;//没找到输出-1 
        cout<<endl;//换行 
    } 
    return 0;//完美结束 
}