1046 译码

译码

https://ac.nowcoder.com/acm/contest/19306/1046

链接:https://ac.nowcoder.com/acm/contest/19306/1046
来源:牛客网
时间限制: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;         for(int i=1;i<=n/5;i++)         {             int ans=0;             for(int j=1;j<=5;j++)              {                 char c;                 cin>>c;                 ans=ans*10+c-'0';                          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;

} 
全部评论

相关推荐

点赞 评论 收藏
转发
2 2 评论
分享
牛客网
牛客企业服务