先用字符串输入,再分别逆序填入数组,接着就模拟手算,从两个数的低位开始(也就是数组从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大数类,不多说了,上代码:
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); } }