C++实现
先用字符串输入,再分别逆序填入数组,接着就模拟手算,从两个数的低位开始(也就是数组从0开始)逐位相加,判断是否大于等于10,如果大于等于10,就取余,然后下一位+1;如果小于10,正常加。
上代码:
#include <iostream>
#include <cstring>
using namespace std;
int a[1000000],b[1000000];
int main()
{
int l1,l2,l;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
string s1,s2;
cin>>s1>>s2;//输入两个数
l1=s1.size();
l2=s2.size();
l=max(l1,l2);
int k=0;
for(int i=l1-1;i>=0;i--){
//逆序填入到数组中
a[k]=s1[i]-'0';
k++;
}
k=0;
for(int i=l2-1;i>=0;i--){
//逆序填入到数组中
b[k]=s2[i]-'0';
k++;
}
for(int i=0;i<l;i++){
//逐位相加
if(a[i]+b[i]>=10){
//判断
a[i]=(a[i]+b[i])%10;
a[i+1]+=1;
}
else a[i]+=b[i];
}
if(a[l]>0) l+=1;
for(int i=l-1;i>=0;i--) cout<<a[i];//输出
cout<<endl;
return 0;
}
Java实现
Java大数类,不多说了,上代码:
import java.math.BigInteger;
import java.util.*;
public class Main{
public static void main(String args[]){
BigInteger a,b;
Scanner input=new Scanner(System.in);
a=input.nextBigInteger();
b=input.nextBigInteger();
a=a.add(b);
System.out.println(a);
}
}