Files
OI-source/2.1262.cpp
2023-08-03 09:22:52 +08:00

50 lines
902 B
C++

#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
int T,k;
bool found[7][128];
char x;
vector<char> can[7];
int last[7];
int main()
{
#ifdef local
freopen("pro.in","r",stdin);
#endif
scanf("%d",&T);
while(T-->0)
{
memset(found,0,sizeof(found));
for(int i=1;i<=5;i++) can[i].clear();
cin>>k;
for(int i=1;i<=6;i++)
for(int j=1;j<=5;j++)
found[j][cin>>x,x]=1;
for(int i=1;i<=6;i++)
for(int j=1;j<=5;j++)
if(found[j][cin>>x,x])
{
can[j].push_back(x);
found[j][x]=0;
}
for(int i=1;i<=5;i++) sort(can[i].begin(),can[i].end());
last[5]=1;
for(int i=4;i>=0;i--) last[i]=last[i+1]*can[i+1].size();
if(k>last[0]) cout<<"NO"<<endl;
else
{
for(int i=1;i<=5;i++)
{
int j=ceil((double)k/last[i])-1;
cout<<can[i][j];
k-=last[i]*j;
}
cout<<endl;
}
}
return 0;
}