九度-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 | } |