废话不多说,直接上代码,这里只做了整型相乘的,没有做小数。
vector<int> BigInt_multiply(int a, int b) { int aa[10] = { 0 }, bb[10] = { 0 }
; int ai, bi, i, j; //将a,b存入数组中 for (ai = 0;a != 0;ai++) { aa[ai] = a % 10; a /=
10; } for (bi = 0;b != 0;bi++) { bb[bi] = b % 10; b /= 10; } //做乘法,得出n*m行结果
vector<vector <int> > c(bi, vector<int>(ai)); for (i = 0;i < bi;i++) { for (j =
0;j < ai;j++) { c[i][j] = bb[i] * aa[j]; } } //将每一行结果相加 vector <int> result(ai +
bi, 0); for (i = 0;i < bi;i++) { for (j = 0;j < ai;j++) { result[i + j] += c[i]
[j]; } } //进位 for (i = 0;i < (ai + bi - 1);i++) { result[i + 1] += (result[i] /
10); result[i] %= 10; } //反序 vector <int> presult(result); for (i = 0;i < (ai +
bi);i++) { if (result[ai + bi - 1] != 0) result[i] = presult[ai + bi - i - 1];
else { if (i == (ai + bi - 1)) { result.pop_back(); break; } result[i] = presult
[ai + bi - i - 2]; } } return result; }
技术
今日推荐