第十一屆藍橋杯省賽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;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章