大数相乘

#include<iostream>
#include<string.h>

using namespace std;

void BigMultiplt(const char *num1, const char *num2){
	int len1=strlen(num1);
	int len2=strlen(num2);
	int *result=new int[len1+len2];
	memset(result,0,len1+len2+1);
	//相乘
	for(int i=0; i<len1; i++){
		for(int j=0; j<len2; j++){
			result[i+j+1]=(num1[i]-'0')*(num2[j]-'0');
		}
	} 
	//处理进位
	for(int i=(len1+len2-1);i>=1; i--){
		result[i-1]+=result[i]/10;
		result[i]=result[i]%10;
	} 
	//输出结果:如果前面有0,先去掉
	int i=0;
	while(!result[i]) i++;
	for(int j=i; j<(len1+len2); j++)
		cout<<result[j];
	cout<<endl;

}


int main(){
	string str1,str2;
	cin>>str1>>str2;
	const char *num1=str1.c_str();
	const char *num2=str2.c_str();
	BigMultiplt(num1,num2);
	return 0;
}

你可能感兴趣的:(大数相乘)