恩,不算很难
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn = 500000 ;
int arr[15];
int cnt;
int n;
int num[maxn];
int getnum(){
int re=0;
for(int i=0;i<n;i++)
re=re*10+arr[i];
return re;
}
void ori(){
cnt=0;
}
int main(){
int m,x,k;
while(~scanf("%d%d",&n,&m)){
ori();
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
}
sort(arr,arr+n);
if(arr[0]!=0)num[cnt++]=getnum();
while(next_permutation(arr,arr+n))
if(arr[0]!=0)num[cnt++]=getnum();
while(m--){
int q;
scanf("%d%d",&x,&k);
bool flag=true;
for(q=0;q<cnt;q++){
if((num[q]+x)%k==0){flag=false;printf("%d\n",num[q]);break;}
//else continue;
}
if(flag) printf("None\n");
}
}
}