ZOJ 1205题解本来是一道大数运算水题,可是却纠结了很久,原因是没能真正读懂题意,要求的计算必须是一一对应输出即使前面出现几个0最后也要把前面的0输出,看别人用C++自己还是两个都提交了结果还是C占的内存少。

 1 #include<stdio.h>
2 #include<string.h>
3
4 int main()
5 {
6
7 char s1[105], s2[105];
8
9 while(scanf("%s%s", s1, s2) != EOF)
10 {
11 int i, j,len1, len2, t=0, a[105]={0}; /*也可以写到外面*/
12 len1 = strlen(s1);
13 len2 = strlen(s2);
14 for(i=0,j=0; i<len1 || j<len2; i++,j++,t++)
15 {
16 if(i < len1)
17 {
18 if (s1[len1-1-i]>='0' && s1[len1-1-i]<='9') /*此处一开始写成了s1[i]>='0'&&s1[i]<='0'纠结了很久ORZ不过最后还是解决了*/
19 a[t] += s1[len1-1-i] - '0';
20 else
21 a[t] += s1[len1-1-i]-'a'+10;
22 }
23 if(j < len2)
24 {
25 if (s2[len2-1-i]>='0' && s2[len2-1-i]<='9')
26 a[t] += s2[len2-1-j] - '0';
27 else
28 a[t] += s2[len2-1-j]-'a'+10;
29 }
30 if(a[t] > 19)
31 {
32 a[t+1] += 1;
33 a[t] = a[t]%20;
34 }
35 }
36 if(a[t]!=0) printf("%d",a[t]);/*此处一还是没写导致纠结了很久*/
37 for(i=t-1; i>=0; i--)
38 {
39 if(a[i] >= 10)
40 printf("%c",a[i]-10+'a');
41 else
42 printf("%d", a[i]);
43 }
44 printf("\n");
45 }
46 return 0;
47 }
posted @ 2011-09-20 23:22  zhongya  阅读(195)  评论(0编辑  收藏  举报