题目描述
实现一个加法器,使其能够输出a+b的值。
输入描述:
输入包括两个数a和b,其中a和b的位数不超过1000位。
输出描述:
可能有多组测试数据,对于每组数据,
输出a+b的值。
示例1
输入
2 6
10000000000000000000 10000000000000000000000000000000
思路:
1.啥叫高精度算法,我不知道。
while True:
a,b=map(int,input().split())
print(a+b)
2.高精度算法,flag记录进位。由最后一位开始逐位相加。
#include<iostream>
using namespace std;
string add(string s1,string s2)
{
int l1=s1.size();
int l2=s2.size();
int l=l1>l2?l2:l1;
int flag=0;
string ans="";
int temp;
char ch;
for(int i=0;i<l;i++)
{
temp=s1[l1-1-i]+s2[l2-1-i]+flag-'0'-'0';
ch=temp%10+'0';
ans=ch+ans;
if(temp>=10)
flag=1;
else flag=0;
}
if (l1>l2)
{
for(int i=l1-l2-1;i>=0;i--)
{
temp=s1[i]+flag-'0';
ch=temp%10+'0';
ans=ch+ans;
if(temp>=10)
flag=1;
else flag=0;
}
}
if (l1<l2)
{
for(int i=l2-l1-1;i>=0;i--)
{temp=s2[i]+flag-'0';
ch=temp%10+'0';
ans=ch+ans;
if(temp>=10)
flag=1;
else flag=0;
}
}
if(flag==1)
ans='1'+ans;
return ans;
}
int main()
{
string s1;
string s2;
while(cin>>s1>>s2)
cout<<add(s1,s2)<<endl;
}