Problem Description:
XYZ-26進制數是一個每位都是大寫字母的數字。 A、B、C、…、X、Y、Z 分別依次代表一個0 ~ 25 的數字,一個 n 位的26進制數轉化成是10進制的規則如下
A0A1A2A3…An-1 的每一位代表的數字爲a0a1a2a3…an-1 ,則該XYZ-26進制數的10進制值就爲
m = a0 * 26^(n-1) + a1 * 26^(n-2) + … + an-3* 26^2 + an-2*26 + an-1
一天vivi忽然玩起了浪漫,要躲在學校的一個教室,讓楓冰葉子去找,當然,她也知道楓冰葉子可不是路癡,於是找到了XYZ的小蝦和水域浪子幫忙,他們會在vivi藏的教室的門口,分別寫上一個XYZ-26進制數,分別爲 a 和 b,並且在門鎖上設置了密碼。顯然,只有找到密碼才能打開鎖,順利進入教室。這組密碼被XYZ的成員稱爲lovekey。慶幸的是,楓冰葉子知道lovekey是 a的10進制值與b的10進制值的和的XYZ-26進制形式。當然小蝦和水域浪子也不想難爲楓冰葉子,所以a 和 b 的位數都不會超過200位。
例如第一組測試數據
a = 0 * 26^5+0* 26^4+ 0* 26^3+ 0 *26^2 + 3*26 + 7 = 85
b = 1*26^2 + 2*26 + 4 = 732
則 a + b = 817 = BFL
Input:
題目有多組測試數據。
每組測試數據包含兩個值均爲的XYZ-26進制數,每個數字的每位只包含大寫字母,並且每個數字不超過200位。
Output:
輸出XYZ的lovekey,每組輸出佔一行。
Sample Input:
AAAADH BCE
DRW UHD
D AAAAA
Sample Output:
BFL
XYZ
D
AC Code:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 201
char s1[N],s2[N];
int a[N],b[N],j;
int main()
{
while(~scanf("%s %s",s1,s2))
{
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
int len1=strlen(s1);
int len2=strlen(s2);
j=0;
for(int i=len1-1;i>=0;i--)
a[j++]=s1[i]-'A';
j=0;
for(int i=len2-1;i>=0;i--)
b[j++]=s2[i]-'A';
for(int i=0;i<N;i++)
{
a[i]+=b[i];
if(a[i]>=26)
{
a[i]-=26;
a[i+1]++;
}
}
bool flag=false;
for(int i=N;i>=0;i--)
{
if(flag)
printf("%c",a[i]+'A');
else if(a[i])
{
printf("%c",a[i]+'A');
flag=true;
}
}
printf("\n");
}
return 0;
}