您的位置:首页 > 其它

大数乘法模板

2012-04-11 11:06 330 查看
void mul( char *a, char *b, char *sum ) 
{
	int temp[2500];
	int i,j,la,lb,l;
	la=strlen(a);
	lb=strlen(b);

	for ( i=0;i<la+lb;i++ )
		temp[i]=0;
	for ( i=la-1;i>=0;i-- ) {
		l=la-1-i;
		for ( j=lb-1;j>=0;j-- ) {
			temp[l]=(b[j]-'0')*(a[i]-'0')+temp[l];
			l++;
		}
	}

	while ( temp[l]==0 )
		l--;
	for ( i=0;i<=l;i++ ) {
		temp[i+1]+=temp[i]/10;
		temp[i]=temp[i]%10;
	}
	if ( temp[l+1]!=0 )
		l++;

	while ( temp[l]/10!=0 ) {   
		temp[l+1]+=temp[l]/10;
		temp[l]=temp[l]%10;
		l++;
	}
	if ( temp[l]==0 )
		l--;
	i=0;
	while ( l>=0 ) {
		sum[i]=temp[l]+'0';
		i++;
		l--;
	}
	sum[i]='\0';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: