话不多讲,上代码
(蒟蒻的第一篇题解)
#include<bits/stdc++.h>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int powpri(int a,int b)
{
return pow(a,b);
}
int i,j,n,q;//i,j为循环变量,n为图书总量,q为读者总量
int shu[1001],du[1001];//shu数组为全部的图书编码,du数组为全部的读者需求码
int ch[1001];//ch数组为全部读者需求码的长度
int ans[1001],t;//ans数组为对全部读者需求码回应的答案,t记录当前需求码是否有图书编码对应
int main()
{
cin>>n>>q;
for(i=0;i<n;i++)
{
cin>>shu[i];
}
for(i=0;i<q;i++)
{
cin>>ch[i]>>du[i];
}
//此上为输入部分 ——————
sort(shu,shu+n);//从小到大排序
for(i=0;i<q;i++)
{
t=0;
for(j=0;j<n;j++)
{
if(du[i]==shu[j]%powpri(10,ch[i]))//由于pow函数无法直接调取数组中的值,用传值调用加个壳
{//用 shu[j]%powpri(10,ch[i])来舍去所有shu[j]的超过当前需求码长度的部分
t=1;
ans[i]=shu[j];
break;//找到了就换下一个
}
}
if(t==0)
{
ans[i]=-1;//没有找到,等会输出-1
}
}
for(i=0;i<q;i++)
{
cout<<ans[i]<<endl;//输出每个需求码对应的答案
}
return 0;
}