列表

详情


NC15940. 译码

描述

现在定义一种编码规则:对于长度为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

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 2ms, 内存消耗: 276K, 提交时间: 2023-04-10 00:52:33

#include <stdio.h>
int main (){   
    int n,m,t,a,b,c;
	scanf("%d",&n);
	while(n--)
	{
		scanf("%d",&m);
		m=m/5;
		while(m--)
		{
			scanf("%5d",&t);
			c=t%26;
			t=t/26;
			b=t%26;
			a=t/26;
			printf("%c%c%c",a+'a',b+'a',c+'a');
		}
		printf("\n");
	}
}

Python3(3.9) 解法, 执行用时: 36ms, 内存消耗: 4480K, 提交时间: 2022-04-20 00:01:45

import re
for i in range(int(input())):
    n=int(input())
    str1=input()
    list1=list(map(int,re.findall(r'.{5}', str1)))
    list1=list(map(lambda s:chr(97+s//26//26)+chr(97+s//26%26)+chr(97+s%26),list1))
    print(''.join(list1))

C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 288K, 提交时间: 2023-07-04 08:02:15

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,t,a;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<=n/5;i++)
		{
			scanf("%5d",&a);
			printf("%c%c%c",a/26/26+'a','a'+a/26%26,'a'+a%26);
		}
		cout<<endl;
	}
}

pypy3 解法, 执行用时: 100ms, 内存消耗: 25672K, 提交时间: 2022-03-22 18:06:32

for T in range(int(input())):
    l = int(input())
    s = input()
    for _ in range(int(l/5)):
        t = int(s[_*5:_*5+5])
        print(chr(97+t//676)+chr(97+(t%676)//26)+chr(97+t%26),end = '')
    print('')

上一题