OpenJudge 2981 大整数加法 C++

链接地址:http://bailian.openjudge.cn/practice/2981

题目:

总时间限制:
1000ms
内存限制:
65536kB
描述

求两个不超过200位的非负整数的和。

输入
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
输出
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
样例输入
22222222222222222222
33333333333333333333
样例输出
55555555555555555555
来源
程序设计实习2007

思路:

大整数加法,套模板即可

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <string>
 4 using namespace std;
 5 
 6 
 7 string sum(string s1,string s2)
 8 {
 9     if(s1.length()<s2.length())
10     {
11         string temp=s1;
12         s1=s2;
13         s2=temp;
14     }
15     int i,j;
16     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
17     {
18         s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));   //注意细节
19         if(s1[i]-'0'>=10)
20         {
21             s1[i]=char((s1[i]-'0')%10+'0');
22             if(i) s1[i-1]++;
23             else s1='1'+s1;
24         }
25     }
26     return s1;
27 }
28 
29 int main()
30 {
31     string str1,str2;
32     cin>>str1>>str2;
33     cout<<sum(str1,str2)<<endl;
34     return 0;
35 }
原文地址:https://www.cnblogs.com/mobileliker/p/3516899.html