【摘录】大整数乘法问题
摘录自《数据结构与原理》
#include <iostream>
#include <memory>
using namespace std;
int* multi(int* num1,int size1,int* num2,int size2)
{
int size=size1+size2;
int* ret=new int[size];
memset(ret,0,sizeof(int)*size);
for(int i=0;i<size2;i++)
{
int k=i;
for(int j=0;j<size1;j++)
{
ret[k]+=num2[i]*num1[j];
k++;
}
}
for(int i=0;i<size;i++)
{
if(ret[i]>=10)
{
ret[i+1]+=ret[i]/10;
ret[i]%=10;
}
}
return ret;
}
int main(int argc,char* argv[])
{
int num1[]={1,2,3,4,5,6,7,8,9,1,1,1,1,1}; //第一个大整数11111987654321
int num2[]={1,1,1,2,2,2,3,3,3,4,4,4,5,5}; //第二个大整数55444333222111
int* ret=multi(num1,14,num2,14);
for(int i=27;i>=0;i--)
cout <<ret[i];
cout <<endl;
delete[] ret;
system("pause");
return 0;
}