小A的计算器

来源:互联网 发布:javascript按钮弹窗 编辑:程序博客网 时间:2024/06/06 02:47

题目描述

以往的操作系统内部的数据表示都是二进制方式,小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进制数来表示。

样例输入

4ba cdc bb cba c

样例输出

dddd

bc

#include<stdio.h>#include<stdlib.h>#include<string.h>int main(void){    int N;    char a[16],b[16];    int sum[16];    int la,lb;    int i,j,k;    while(scanf("%d",&N) != EOF){          while(N--){                     memset(sum,0,16 * sizeof(int));                     scanf("%s%s",a,b);                     la = strlen(a);                     lb = strlen(b);                     for(i=la-1,j=lb-1,k=0;i>=0 && j >= 0;--i,--j){                                            sum[k++] = a[i]-'a' + b[j] - 'a';                     }                     if(i<0 && j>=0){                            for(;j>=0;j--)                            sum[k++] = b[j] - 'a';                    }                    if(i>=0 && j<0){                            for(;i>=0;i--)                            sum[k++] = a[i] - 'a';                    }                    for(i=0;i<k;i++){                                sum[i+1] = sum[i+1] + sum[i] / 26;                                 sum[i] = sum[i] % 26;                    }                    for(i=k+1;i>=0;i--){                                    if(sum[i] != 0)                                              break;                    }                    if(i== -1)                           printf("a");                     for(;i>=0;i--)                    printf("%c",'a'+ sum[i]);                    printf("\n");        }       }    return 0;}

0 0
原创粉丝点击