题解 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;//完美结束
}