emmm
至于这道题,很多人做过
因此身为蒟蒻的我也试了试
结果是Pascal AC
C++ RE
当然最后还是过了- \_-lll
呐,Pascal代码献上
```cpp
var
n,i,j,k,t,s,r,q:longint;//多余的大家无视就行,作者习惯
a,x,y,m:array[1..100051]of longint;//数组多余的无视就行,作者习惯
b:boolean;//方便啦
function anddd(n,m:longint):longint;//只是作者比较笨,所以就把n^m打成了函数
var i:longint;
begin
anddd:=1;
for i:=1 to m do anddd:=anddd*n;
end;
begin//主程序到此
read(n,q);
for i:=1 to n do read(a[i]);//不管,先读入
for i:=1 to q do begin//作者为了少打字,所以就这样了,习惯就好
read(x[i],y[i]);//读入
m[i]:=2147483647;//为了方便后面的比大小,就直接取了数据上限
b:=false;//判断是否可以
for j:=1 to n do begin//书的代码一个个找
if a[j] mod anddd(10,x[i])=y[i] then if a[j]<m[i] then begin//判断其末尾是否符合
m[i]:=a[j];//如果符合就。。。
b:=true;
end;
end;
if b then writeln(m[i])//如果可以就输出
else writeln(-1);//如果不行就输出-1
end;
end.//Pascal代码到此,感谢配合:)
```
----------------------------------Pascal---------------------------
-----------------------------------分割线-------------------------
-----------------------------------C++----------------------------
好的
接下来是C++代码
【P.S:其实是由Pascal改编的,但是作者累了,就不解释了:) 】
```cpp
#include<iostream>
using namespace std;
int anddd(int,int);
int a[1001],m[1001],x[1001],y[1001];
int main()
{
int n,q;
bool b;
cin>>n>>q;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=q;i++)
{
cin>>x[i]>>y[i];
m[i]=2147483647;
b=false;
for (int j=1;j<=n;j++)
{
if ((a[j]%(anddd(10,x[i])))==y[i]) if (a[j]<m[i])
{
m[i]=a[j];
b=true;
}
}
if (b) cout<<m[i]<<endl;
else cout<<-1<<endl;
}
}
int anddd(int n,int m)
{
int a=1;
for (int i=1;i<=m;i++) a*=n;
return a;
}
```
---------------------------------作者歇去了,拜拜------------------
【P.S:如有雷同,纯属巧合:) 】