大整数相加(java VS c++实现)

大整数相加

    整体思想都是补零,如a:123,b:1,补零后a:123, b:001然后相加进位

java是前补零

c++是将数从个位存,剩下的默认为0

java实现

import java.math.BigInteger;

public class Q2 {

	/*
	 * 两大数相加。
	 */
	/*
	 * 方法一:
	 * 用java.math.BigInteger类
	 * 注:必须是正整数相加 
	 */
	public String m1(String a, String b){
		BigInteger big1 = new BigInteger(a);
		BigInteger big2 = new BigInteger(b);
		return big1.add(big2).toString();
	}
	/*
	 * 方法二:
	 */
	public String m2(String a, String b){
		int len1 = a.length();
		int len2 = b.length();
		int len = len1;
		if(len1 > len2){
			for(int i = 0; i < len1 - len2; i ++){
				b = '0' + b;
			}
			len = len1;
		}else if(len1 < len2){
			for(int i = 0; i < len2 - len1; i ++){
				a = '0' + a;
			}
			len = len2;
		}
		int c[] = new int[len];
		int a1, b1;
		int temp = 0;
		String s = "";
		for(int i = len - 1; i >= 0; i --){
			//char转为int
			a1 = Integer.valueOf(a.charAt(i)) - 48;
			//法二:char转为int
			//a1 = a.charAt(i) - '0';
			b1 = Integer.valueOf(b.charAt(i)) - 48;
			
			c[i] = (a1 + b1 + temp) % 10;
			temp = (a1 + b1 + temp) / 10;

			s = String.valueOf(c[i]) + s;

		}
		
		return s;
	}
	public static void main(String[] args){
		
		Q2 q2 = new Q2();
		String a = "99999999999999999999999999";
		String b = "11111111111111111111111111111";
		String s = q2.m1(a, b);
		System.out.println(s);
		String c = q2.m2(a, b);
		System.out.println(c);

	}
}

 C++实现

#include<iostream>
using namespace std;

void main(){
	char a[201], b[201];
	int a1[201], b1[201];
	memset(a1, 0, sizeof(a1));
	memset(b1, 0, sizeof(b1));
	cin >> a >> b;
	int len1 = strlen(a);
	int len2 = strlen(b);
	int len = len1 > len2 ? len1 : len2;
	int j = 0;
	for(int i = len1 - 1; i >= 0; i --){
		a1[j ++] = a[i] - '0';//a1从个位开始存放
	}
	j = 0;
	for(i = len2 - 1; i >= 0; i --){
		b1[j ++] = b[i] - '0';
	}

	int n = 0; //n表示进位
	int temp;
	for(i = 0; i < len; i ++){
		temp = a1[i] + b1[i] + n;
		a1[i] = temp % 10;
		n = temp / 10;
	}
	if(n != 0){//表示最高位相加后的进位
		cout << n;
	}
	for(i = len - 1; i >= 0; i --){//从高位开始输出
		cout << a1[i];
	}
	cout << endl;
	

}

猜你喜欢

转载自maidoudao.iteye.com/blog/1686438
今日推荐