- #include<stdio.h>
- #include<string.h>
- #define E 97
- int main(void)
- {
- int n,sum,i,j,k,count,carry=0,f=1;
- char a[10],b[10],re[11],ca,cb;
- while(scanf("%d",&n)!=EOF)
- {
- for(i=0;i<n;i++)
- {
- scanf("%s %s",a,b);
- j=strlen(a)-1;
- k=strlen(b)-1;
- count = j>k ? j:k;
- count+=1;
- while(j>=0||k>=0)
- {
- if(j<0)
- ca='a';
- else
- ca=a[j];
- if(k<0)
- cb='a';
- else
- cb=b[k];
- sum=ca+cb-2*E+carry;
- re[count--]=sum%26+E;
- carry = sum/26;
- j--;
- k--;
- }
- count = (strlen(a)>strlen(b) ? strlen(a):strlen(b))+1;
- if(carry!=0)
- {
- re[0]=carry+E;
- j=0;
- }
- else
- {
- j=1;
- }
- for(;j<count;j++)
- {
- if(!(re[j]=='a' && f))
- { printf("%c",re[j]);
- f=0;
- }
- }
- if(f)
- printf("a\n");
- else
- printf("\n");
- carry=0;
- f=1;
- }
- }
- }
- 題目描述:
-
以往的操作系統內部的數據表示都是二進制方式,小A新寫了一個操作系統,系統內部的數據表示爲26進制,其中0-25分別由a-z表示。
現在小A要在這個操作系統上實現一個計算器,這個計算器要能實現26進制數的加法運算。你能幫小A實現這個計算器嗎?
- 輸入:
-
輸入的第一行包括一個整數N(1<=N<=100)。
接下來的N行每行包括兩個26進制數x和y,它們之間用空格隔開,每個數的位數最多爲10位,我們可以保證相加的結果的位數最多也是10位。每個數會用小A所設計的操作系統中的表示方法來表示,如:bsadfasdf。即每個數的各個位均由26個小寫字母a-z中的一個來表示。
- 輸出:
-
輸出x和y相加後的結果,結果也要用題目中描述的26進制數來表示。
- 樣例輸入:
-
4 ba cd c b b c ba c
- 樣例輸出:
-
dd d d bc
- 提示:
-
1.注意,26進制數的表示方式和10進制數一樣,最右邊是最低位。
2.輸入的兩個數有可能有前綴0,即a,請在程序中進行處理。
3.結果中如果出現前綴0,請自動濾除,除非結果就是0。如:結果爲ab時,要輸出b,因爲a表示0。