九度-1340-小A的计算器[进制转换] | Acm之家
以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。
现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。你能帮小A实现这个计算器吗?
Read full article from 九度-1340-小A的计算器[进制转换] | Acm之家
以往的操作系统内部的数据表示都是二进制方式,小A新写了一个操作系统,系统内部的数据表示为26进制,其中0-25分别由a-z表示。
现在小A要在这个操作系统上实现一个计算器,这个计算器要能实现26进制数的加法运算。你能帮小A实现这个计算器吗?
while(N--){ |
14 |
15 | memset(sum,0,16 * sizeof(int)); |
16 | scanf("%s%s",a,b); |
17 | la = strlen(a); |
18 | lb = strlen(b); |
19 | for(i=la-1,j=lb-1,k=0;i>=0 && j >= 0;--i,--j){ |
20 | sum[k++] = a[i]-'a' + b[j] - 'a'; |
21 |
22 | } |
23 | if(i<0 && j>=0){ |
24 | for(;j>=0;j--) |
25 | sum[k++] = b[j] - 'a'; |
26 | } |
27 | if(i>=0 && j<0){ |
28 | for(;i>=0;i--) |
29 | sum[k++] = a[i] - 'a'; |
30 | } |
31 | for(i=0;i<k;i++){ |
32 | sum[i+1] = sum[i+1] + sum[i] / 26; |
33 | sum[i] = sum[i] % 26; |
34 | } |
35 | for(i=k+1;i>=0;i--){ |
36 | if(sum[i] != 0) |
37 | break; |
38 | } |
39 | if(i== -1) |
40 | printf("a"); |
41 | for(;i>=0;i--) |
42 | printf("%c",'a'+ sum[i]); |
43 |
44 | printf("\n"); |
45 | } |