C++高精度算法之大數相乘

#include <iostream>
#include <cstring>
using namespace std;
int main(){
	char as[110] , bs[110];
	int a[110],b[112],c[112];
	memset (a,0,sizeof(a));
	memset (b,0,sizeof(b));
	memset (c,0,sizeof(c));
	cin >> as >> bs;
	int lena = strlen(as);
	int lenb = strlen(bs);

	//將char轉換爲int數組,從a[1]和b[1]開始存儲 
	for (int i = 0 ; i < lena ; i ++)
		a[lena - i] = as[i] - '0';
	for (int j = 0 ; j < lenb ; j ++)
		b[lenb - j] = bs[j] - '0';
	
	for (int i = 1 ; i <= lena ; i ++ ){
		int x = 0;
		for (int j = 1 ; j <= lenb ; j ++){
			//首先計算當前的
			c [i + j - 1] = a[i] * b[j] + c[i+j-1] + x; //當前 + 上次 + 進位   
			x = c[i + j - 1] /10;
			c[i + j - 1] %= 10;
		} 
		c[i+lenb] = x;//第一行的最後一位進位 
	}
	int lenc = lena + lenb ;
	while(c[lenc] == 0&& lenc > 1)
		lenc -- ;
	for (int i = lenc  ; i >= 1 ; i --)
		cout << c[i];
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章