#include <iostream>
#include <cmath>
#include <string.h>
#include <stdio.h>
#include <map>
#include <algorithm>
using namespace std;
//快速幂
int a[10009];
const int mod=997;
int pow_quick(int x,int n)
{
int sum=1;
while(n)
{
if(n%2)sum=sum*x%mod;
x=x*x%mod;
n/=2;
}
return sum;
}
int main ()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d%*c",&n);
map<int,int>a;
char s[1000009],s1[1000009];
int v[1000]= {0};
gets(s);
int len=strlen(s);
for(int i=48; i<=122; i++)
{
int k=pow_quick(i,n);
v[k]++;
a[k]=i;
}
int i;
for(i=0; i<len; i+=3)
{
int ans=0;
ans=(s[i]-'0')*100+(s[i+1]-'0')*10+(s[i+2]-'0');
if(v[ans]!=1)break;
s1[i/3]=(char)a[ans];
}
if(i<len)printf("No Solution\n");
else
{
len/=3;
for(i=0; i<len; i++)
printf("%c",s1[i]);
printf("\n");
}
}
return 0;
}
第二届山东ACM省赛 Crack Mathmen
最新推荐文章于 2018-04-12 09:35:58 发布