大整数乘法(c++)【转载】

摘自《c++数据结构原理与经典问题求解》

#include

#include

#include

 

using namespace std;

 

//返回位数为size1+size2

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

    {

        int k=i;

        for(int j=0;j

        {

            ret[k++]+=num2[i]*num1[j];

        }

    }

    for(int i=0;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};    //第一个大整数321

    int num2[]={1,2,3};    //第二个大整数321

    int* ret=multi(num1,sizeof(num1)/sizeof(num1[0]),num2,sizeof(num2)/sizeof(num2[0]));

    for(int i=(sizeof(num1)/sizeof(num1[0])+sizeof(num2)/sizeof(num2[0]))-1;i>=0;i--)

        cout<<ret[i];

    cout<<endl;

    delete [] ret;

    return 0;

}

运行结果:

 

大整数乘法(c++)【转载】

posted @ 2016-05-06 22:27  硫酸亚铜  阅读(739)  评论(0编辑  收藏  举报