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

#include 
#include 
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;
}

 

你可能感兴趣的:(C++)