码迷,mamicode.com
首页 > 其他好文 > 详细

【NEUQACM OJ】1018: A+B again

时间:2016-06-05 23:01:44      阅读:990      评论:0      收藏:0      [点我收藏+]

标签:

1018: A+B again

 

题目描述

谷学长有一个非常简单的问题给你,给你两个整数A和B,你的任务是计算A+B。

输入

输入的第一行包含一个整数T(T<=20)表示测试实例的个数,然后2*T行,分别表示A和B两个正整数。注意整数非常大,那意味着你不能用32位整数来处理。你可以确定的是整数的长度不超过1000。

输出

对于每一个样例,你应该输出两行,第一行是"Case #:",#表示第几个样例,第二行是一个等式"A+B=Sum",Sum表示A+B的结果。注意等式中有空格。

样例输入

2
1
2
112233445566778899
998877665544332211

样例输出

Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110

提示

 

大数加法问题,在大数运算里面相对还算简单,不过对初学者博主来说,思路清晰,不过写代码能力明显就有点跟不上了。

下面我们来分析下吧:

     前面的Case什么的只要把相应已知数据输出即可,下面我们重点来分析下加法的结果

    

       首先我们看他的输入,是连续输入,即这个大数字各个位之间是没有空格的,这就意味着用整型的数组难以实现数据的输入问题。因此我们考虑用字符型数组解决输入问题。

       这里方便起见;我们输入字符数组a为“98”,b为“9”  来分析下思路。

       原理就是模拟小学加法,要做加法,首先每位数字应对齐,才可对应相加。因此,我们考虑定义字符数组 char c[1001]来转移并对齐a,b中的元素;

                              cin>>a;  "98"

技术分享

代码如下:

 1 #include<iostream>
 2 #include<cstring>
 3 using namespace std;
 4 
 5 char a[1001],b[1001];
 6 
 7 void Add()//字符加法 
 8 {
 9     
10     char c[1001];
11     memset(c,0,1001);
12     for(int i=0;i<strlen(a);i++)//对齐 
13     {
14         c[i]=a[strlen(a)-1-i];
15     }
16     
17     
18     memset(a,0,1001);
19     for(int i=0;i<strlen(b);i++)
20     {
21         a[i]=b[strlen(b)-1-i];
22     }
23     
24     for(int i=0;i<1000;i++)
25     {
26         a[i]+=c[i]-0;
27         if(a[i]>9)
28         {
29             a[i]-=10;
30             a[i+1]++; 
31         }
32     }
33     
34 }
35 
36 
37 int main()
38 {
39     int T,n=0;
40     cin>>T;
41     while(T--)
42   {
43       n++;
44     memset(a,0,1001);
45     memset(b,0,1001);
46     
47     cin>>a>>b;
48     
49     cout<<"Case "<<n<<":"<<endl; 
50     cout<<a<<" + "<<b<<" = ";
51     
52     
53     Add();
54     
55     int k;
56     for(k=1000;k>=0;k--)//排前导0 
57     {
58         if(a[k]!=0)
59         {break;}
60     }
61     for(int i=k;i>=0;i--)
62     {
63         cout<<a[i];
64     }
65     cout<<endl;
66    }
67     return 0;
68  } 

 

【NEUQACM OJ】1018: A+B again

标签:

原文地址:http://www.cnblogs.com/dearvee/p/5562057.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!