时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述 

现在定义一种编码规则:对于长度为3的字符串(均由小写字母组成),首先按照字典序进行排序,即aaa,aab,aac,…,zzz,
将这些字符串按照顺序依次从00001至17575编码(前缀0不可省略),即aaa=00000,aab=00001,aac=00002,…,zzz=17575。
现在给出一串数字,请你通过计算输出这串数字对应的原字符串。(输入保证该数字长度为5的倍数)

例如输入000021757511222,每五位编号对应于一个字符串

编号00002对应字符串 aac

编号17575对应字符串 zzz

编号11222对应字符串 qpq

故输出为 aaczzzqpq

输入描述:

输入第一行包含一个整数T,代表测试案例个数。(0 < T ≤10)

接下来每个测试案例包括两行,第一行为一个整数length(0<length<=100),代表数字串的长度,第二行为长度为length的数字串。

输出描述:

输出数字串对应的原字符串。
示例1

输入

2
10
0000000001
15
000021757511222

输出

aaaaab
aaczzzqpq
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
	int t;
	cin>>t;
	while(t--)
	{
		int n;
		cin>>n;//整数长度n
		for(int i=1;i<=n/5;i++)//每5个一组分别统计 共有n/5组 
		{
			int ans=0;
			for(int j=1;j<=5;j++)//每组长度为5的数字字符串 按单个字符方式输入 
			{
				char c;
				cin>>c;
				ans=ans*10+c-'0';//把每个数字字符变成数字再组合成数字(最终组合成的数值范围为0-17575) 
			} 
			 char a[3]={0};
			 for(int j=2;j>=0;j--)//注意顺序 最后一个字符先赋值 
			 {
			 	a[j]=char(97+ans%26);//对应的字符赋值 
			 	ans=ans/26; 
			 } 
			 for(int j=0;j<3;j++)
			 	cout<<a[j];
		} 
		cout<<endl;
	}
	return 0;
}