第十一届蓝桥杯省赛C组 真题 I: 字符串编码

试题 I: 字符串编码
时间限制: 1.0s 内存限制: 512.0MB 本题总分:25 分
【问题描述】
小明发明了一种给由全大写字母组成的字符串编码的方法。对于每一个大
写字母,小明将它转换成它在 26 个英文字母中序号,即 A → 1, B → 2, … Z →
26。
这样一个字符串就能被转化成一个数字序列:
比如 ABCXYZ → 123242526。
现在给定一个转换后的数字序列,小明想还原出原本的字符串。当然这样
的还原有可能存在多个符合条件的字符串。小明希望找出其中字典序最大的字
符串。
【输入格式】
一个数字序列。
【输出格式】
一个只包含大写字母的字符串,代表答案
【样例输入】
123242526
【样例输出】
LCXYZ
【评测用例规模与约定】
对于 20% 的评测用例,输入的长度不超过 20。
对于所有评测用例,输入的长度不超过 200000。

//#define LOCK
#include<stdio.h>
#include<string.h>
int main()
{
    
    
	char as[27]={
    
    '0','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
	char sz[20000];
	gets(sz);
	int l;
	l=strlen(sz);
	#ifdef LOCK
    printf("%d",l);
    #endif
	int i;
    for(i=0;i<l;i++)
	{
    
    
        int	j=0,s=0,sum=0;
        j=(int)sz[i];
        s=(int)sz[i+1];
        s-=48;
        j-=48;
        sum=j*10+s;
        #ifdef LOCK
	    printf("%d\n",sum);
	    #endif
        if(sum>26)
        {
    
    
        	printf("%c",as[j]);
		}
		else {
    
    
			printf("%c",as[sum]);
			i++;
		}
	}
	return 0;
 } 

猜你喜欢

转载自blog.csdn.net/qq_46232829/article/details/107179383