给定两个以字符串表示的非负整数 num1
和 num2
,返回 num1
和 num2
的乘积。
注意:
num1
和num2
的长度均小于110。num1
和num2
均只包含数字0-9
。num1
和num2
均不以零开头。- 你不能使用任何内置的大整数库或直接将输入转换为整数。
string BigNumMultiply(string str1,string str2) { if (str1 == "0" || str2 == "0") return "0"; int size1 = str1.size(), size2 = str2.size(); string str(size1 + size2,'0'); for (int i = size2 - 1; i >= 0; --i) { int mulflag = 0, addflag = 0; for(int j = size1 - 1; j >= 0; --j) { int temp1 = (str2[i] - '0') * (str1[j] - '0') + mulflag; mulflag = temp1 / 10; temp1 = temp1 % 10; int temp2 = str[i + j + 1] - '0' + temp1 + addflag; str[i + j + 1] = temp2 % 10 + '0'; addflag = temp2 / 10; } str[i] += mulflag + addflag; } if (str[0] == '0') str = str.substr(1, str.size()); return str; }