我創建了一個小的控制檯應用程序,它將乘以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)時,我得到錯誤的答案。 –