string Big::Mult(string num11, string num22,int n)
{
string A, B, C, D;
string AC, x, BD;
string result;
if (n == 1)
result = num_to_string(string_to_num(num11)*string_to_num(num22));//这个不用管
else
{
A = leftChange(num11);
B = rightChange(num11);
C = leftChange(num22);
D = rightChange(num22);
AC = Mult(A, C, n / 2);
BD = Mult(B, D, n / 2);
x = Mult(minus(A, B), minus(D, C), n / 2);
result = add(add(addZero(AC, n), addZero(add(add(x, AC), BD), n / 2)), BD);
}
return result;
}
大致就是9999*9999,把num1分成99和99,让A=99,B=99,同理得C=D=99。然后result=AC*10的n次+((A-B)(D-C)+AC+BD)*10的n/2次+BD。