-
问题描述
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。 -
解决思路
先进行相乘,然后进行存储,最后考虑进位。
#include<iostream>
#include<string>
#define MAX 1000
using namespace std;
int main()
{
string str1,str2;
cin >> str1>>str2;
int result[MAX]={0};
int num1[MAX]={0};
int num2[MAX]={0};
int size_num1 = str1.size();
int size_num2 = str2.size();
for(int i=0,j=size_num1-1;i<size_num1;i++,j--)
num1[j]=str1[i]-'0';
for(int i=0,j=size_num2-1;i<size_num2;i++,j--)
num2[j]=str2[i]-'0';
for(int i=0;i<size_num1;i++)
for(int j=0;j<size_num2;j++)
result[i+j]=result[i+j]+num1[i]*num2[j];
string str="";
for(int i=0;i<(size_num1+size_num2-1);i++)
{
result[i+1] = result[i+1]+result[i]/10;
str+=to_string(result[i]%10);
}
if(result[size_num1+size_num2-1]!=0)
str+=to_string(result[size_num1+size_num2-1]);
for(int i=str.size()-1;i>=0;i--)
cout<<str[i];
return 0;
}