【摘录】大整数乘法问题

 

摘录自《数据结构与原理》

 

#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;
    
}
posted @ 2009-11-17 22:04  leukotrichia  阅读(335)  评论(0编辑  收藏  举报