题目描述
输入两个整数,求这两个整数的和是多少。
输入格式
输入两个整数A,B,用空格隔开,0≤A,B≤108
输出格式
输出一个整数,表示这两个数的和
样例
样例输入:
3 4
样例输出:
7
c++代码:
shabby方法,直接亮代码
#include <bits/stdc++.h>
#include <algorithm>
#include <bitset>
#include <cctype>
#include <cerrno>
#include <clocale>
#include <cmath>
#include <complex>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <deque>
#include <exception>
#include <fstream>
#include <functional>
#include <limits>
#include <list>
#include <map>
#include <iomanip>
#include <ios>
#include<iosfwd>
#include <iostream>
#include <istream>
#include <ostream>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <stdexcept>
#include <streambuf>
#include <string>
#include <utility>
#include <vector>
#include <cwchar>
#include <cwctype>
//-------------------------
#pragma GCC optimize(0)
#pragma GCC optimize(1)
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(4)
#pragma GCC optimize("Ofast") //O优化
//-------------------------
using namespace std;
int main()
{
char str1[10100],str2[10100],str3[10100]; //str1表示a,str2表示b,str3表示(a+b)
cin>>str1>>str2; //输入
long long len1=strlen(str1),len2=strlen(str2); //len1表示str1的长度,len2表示str2的长度
if(len1>len2) //判断长度,位数大的一定比位数小的大
{
for(long long i=0;i<len1;i++)
{
swap(str1[i],str2[i]);
}
//交换两个数,确保是str2的长度>=str1
swap(len1,len2); //数字交换,长度也要记得交换哦
}
for(long long i=0;i<len1/2;i++)
{
swap(str1[i],str1[len1-i-1]); //把数字反过来,方便计算
}
for(long long i=0;i<len2/2;i++)
{
swap(str2[i],str2[len2-i-1]); //把数字反过来,方便计算
}
long long jw=0; //jw表示进位
for(long long i=0;i<len2;i++)
{
if(i<len1)
{
str3[i]=(str1[i]+str2[i]-'0'-'0'+jw)%10+'0';
jw=(str1[i]+str2[i]-'0'-'0'+jw)/10;
}
else if(i>=len1&&i<len2)
{
str3[i]=(str2[i]-'0'+jw)%10+'0';
jw=(str2[i]-'0'+jw)/10;
}
//把两数相加,多出部分赋值给jw
}
if(jw!=0)
{
cout<<jw;
//若两数相加,最高位会进位,则另外处理(输出最高位)
}
for(long long i=len2-1;i>=0;i--)
{
cout<<str3[i]; //输出剩余部分
}
return 0;
}
//-------------------------
//搞定,AC
shabby写法
普通a+b写高精