-
问题描述
有两个用字符串表示的非常大的大整数,算出他们的乘积,也是用字符串表示。不能用系统自带的大整数类型。 -
解决思路
先进行相乘,然后进行存储,最后考虑进位。
#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;
}
本文介绍了一种不使用系统自带大整数类型实现两个大整数相乘的方法。通过将字符串表示的大整数转换为数组,进行逐位相乘并处理进位,最终得到字符串形式的乘积。
2209

被折叠的 条评论
为什么被折叠?



