- #include "stdio.h"
- #include <memory>
- //返回位数size1+size2
- int* multi(int*num1,int size1,int* num2,int size2)
- {
- int size=size1+size2;
- int* ret=(int*)malloc(size*sizeof(int));
- int i=0;
- memset(ret,0,sizeof(int)*size);
- for(i=0;i<size2;++i)
- {
- int k=i;
- for(int j=0;j<size1;++j)
- {
- ret[k++]+=num2[i]*num1[j];
- }
- }
- for(i=0;i<size;++i)
- {
- if(ret[i]>=10)
- {
- ret[i+1]+=ret[i]/10;
- ret[i]%=10;
- }
- }
- return ret;
- }
- int main()
- {
- 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--)
- {
- printf("%d",ret[i]);
- }
- free(ret);
- return 0;
- }
- //该片段来自于http://www.codesnippet.cn/detail/0203201511814.html
来源: http://www.codesnippet.cn/detail/0203201511814.html