大数加法(C++和Java实现)

大数加法

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);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_45743427/article/details/108970122