高精度加法
题目描述
高精度加法就是两个很大的、位数很多的数字相加。
输入
第一行有一个整数T,表示接下来有T组数据,对于每组,输入两行,每行表示一个非负整数(不超过200位)。
输出
T行数,每行一个数,是相应输入组的两数之和。
样例输入
1
99
101
样例输出
200
#include<iostream>
#include<cstring>
using namespace std;
const int maxn =250;
int main()
{
ios::sync_with_stdio(false);//这是小妹的习惯大家忽略就好
cin.tie(0);cout.tie(0);
int n;
cin>>n;
while(n--)
{
string s1,s2;
int a[maxn],b[maxn],vis[maxn];//这个用来储存大数的每一个数
memset(a,0,sizeof(a));//初始化
memset(b,0,sizeof(b));
memset(vis,0,sizeof(vis));
cin>>s1>>s2;
int c=0;//这个就是进位数
for(int i=0;i<s1.size();i++)//把他们倒序过来装入数组里
a[i]=s1[s1.size()-i-1]-'0';
for(int i=0;i<s2.size();i++)
b[i]=s2[s2.size()-i-1]-'0';
int i;
for(i=0;i<s1.size()||i<s2.size();i++)
{
vis[i]=a[i]+b[i]+c;//这个就是实行加法
c=vis[i]/10;
vis[i]%=10;
}
vis[i]=vis[i]+c;
while(vis[i]==0&&i>=1)i--;//去除前导0
for(;i>=0;i--)
cout<<vis[i];
cout<<endl;
}return 0;
}