码迷,mamicode.com
首页 > 其他好文 > 详细

大数乘法——模板

时间:2018-08-03 19:52:55      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:模板   表示   weight   乘法   tmp   max   class   multi   数组   

void multi(int a[],int b[],int c[],int an,int bn,int &cn){ //a[]被乘数  b[]乘数  c[] 保存结果
				  //an表示a数组中所存大数的位数,bn表示b数组中所存大数的位数,cn存c数组的位数 
	for(int i=maxn-1;i>=maxn-bn;i--){   		 		  //乘数 
		int weight=0;								     //进位数 
		for(int j=maxn-1;j>=maxn-an;j--){      			//被乘数 
			int tmp=(c[j-(maxn-i)+1]+a[j]*b[i]+weight)/10; 
			c[ j-(maxn-i)+1 ]=( c[ j-(maxn-i)+1 ]+a[j]*b[i]+weight )%10;
			weight=tmp;
		}
		if(weight){  //最高位进位 
			c[maxn-an-1- (maxn-i-1)  ]=weight;  
			cn=maxn-(maxn-an-1- (maxn-i-1));
		} 
	}
	cn<=an+bn-1? cn=an+bn-1:cn=cn;
}

  

大数乘法——模板

标签:模板   表示   weight   乘法   tmp   max   class   multi   数组   

原文地址:https://www.cnblogs.com/z-bear/p/9415831.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!