微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大数乘法

void MUL(char str1[],char str2[],char result[])
{
	int len1 = strlen(str1),len2 = strlen(str2);
	int index = 0,carry = 0,temp = 0;;

	for (int i1 = len1 - 1; i1 >= 0; --i1)
	{
		index = len1 - 1 - i1;
		for (int i2 = len2 - 1; i2 >= 0; --i2)
		{
			temp = (result[index] - '0') + (str1[i1] - '0') * (str2[i2] - '0') + carry;

			result[index] = temp%10 + '0';
			carry = temp/10;

			++index;
		}

		if (carry > 0)
		{
			result[index] = (result[index] - '0') + carry + '0';
			carry = 0;
			++index;
		}
	}

	//去掉结果数字串中前面的0
	while (result[index] == '0' && index > 0)
	{
		--index;
	}

	result[++index] = '\0';

	int i =0,j = index - 1;
	while(i < j)
	{
		Swap(result[i],result[j]);
		++i;
		--j;
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐