代码改变世界

HDU_1002(大数相加)

2015-04-26 09:24  HaodongGUO  阅读(106)  评论(0)    收藏  举报

HDU-problem 1002

发个链接: http://acm.hdu.edu.cn/showproblem.php?pid=1002

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 int n,m1,m2,i,j,d,k,s;
 5 char CA[1000],CB[1000];
 6 int IA[1001];
 7 
 8 int main()
 9 {
10     scanf("%d",&n);
11     s=1;
12            while (n--)
13            {
14                 scanf("%s%s",CA,CB);
15                 m1=strlen(CA);
16                 m2=strlen(CB);
17                 //第一步 
18                 d=0;
19                 for(i=m1-1,j=m2-1,k=0;i>=0&&j>=0;i--,j--,k++)
20                 {
21                     d=CA[i]-'0'+CB[j]-'0'+d;
22                     IA[k]=d%10;
23                     d=d/10;
24                 }
25                 //第二步
26                 if(k==m1)//CA[]如果比较完成 
27                 {
28                     while(j>=0)//但是CB[]还没有比较完成
29                     {
30                         d=CB[j]-'0'+d;
31                         IA[k]=d%10;
32                         d=d/10;
33                         k++;
34                         j--; 
35                      } 
36                  } 
37                  else//ca[]还没有 比较完成 
38                  {
39                      while(i>=0)
40                      {
41                          d=CA[i]-'0'+d;
42                         IA[k]=d%10;
43                         d=d/10;
44                         k++;
45                         i--; 
46                      }
47                  }
48                  //第三步
49                  if(d!=0)
50                  {
51                      IA[k]=d;
52                      k++;
53                   } 
54                   //输出
55                   printf("Case %d:\n",s);
56                       printf("%s + %s = ",CA,CB);
57                       for (i=k-1;i>=0;i--)
58                        printf("%d",IA[i]);
59                        printf("\n");
60                      if(n>=1)
61                      printf("\n");
62                       s++; 
63                 
64            }
65     
66     return 0;
67 }
View Code

ps: 由于自己是菜鸟,这三个步骤一开始自己也想不到,看了别人写的代码才知道大数的计算,

ps:如果有写错的地方,请指正