废话不多说,直接上代码,这里只做了整型相乘的,没有做小数。
vector 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 c(bi, vector(ai));
for (i = 0;i
c[i][j] = bb[i] * aa[j];
}
}
//将每一行结果相加
vector result(ai + bi, 0);
for (i = 0;i
result[i + j] += c[i][j];
}
}
//进位
for (i = 0;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;
}
|