我创建了一个小的控制台应用程序,它将乘以2的长整数。 我不知道我的问题在哪里。这个应用程序工作正常,直到数字位数是3.如何繁殖2个大数字?
但如果数字的数量大于3,应用程序的输出是错误的。 :(
请告诉我在哪里我的问题是,我解决它
这里是我的代码:
int digits (int n)
{
int counter = 0;
while (n > 0)
{
n/=10;
counter++;
}
return counter;
}
long longMultiply(long a, long b)
{
const int S = 3;
int w,x,y,z;
int n = max(digits(a),digits(b));
if(a == 0 || b ==0) {
return 0;
} else if (n <= S) {
return a*b;
} else {
int m = (n/2);
//first number
x = a/(10^m);
y = a%(10^m);
//second number
w = b/(10^m);
z = b%(10^m);
return (longMultiply(x,w)*(10^(2*m)) + (longMultiply(x,z) + longMultiply(w,y)))*(10^m) + longMultiply(y,z) ;
}
}
int main() {
//digits(12345);
cout << longMultiply(100,100);
return 0;
}
任何错误结果的例子? – hivert
如果数字的数量是biger tahn 3是的,我得到了争辩的答案。例如,当longMultiply(999,999)我得到正确的anwser。但是当值是longMultiply(1000 * 1000)时,我得到错误的答案。 –