fix: memory error

This commit is contained in:
2023-10-31 00:04:16 +08:00
parent 104a896ad5
commit 81eeb3281f
3 changed files with 7 additions and 7 deletions

View File

@ -176,7 +176,7 @@ inline void UnsignedAdd(int2048 &A, const int2048 *const pB) {
i++) {
if (i < (pB->num_length + int2048::kNum - 1) / int2048::kNum)
A.val[i] += pB->val[i];
A.val[i + 1] += A.val[i] / int2048::kMod;
if (i + 1 < A.buf_length) A.val[i + 1] += A.val[i] / int2048::kMod;
A.val[i] %= int2048::kMod;
}
A.num_length = std::max(A.num_length, pB->num_length);
@ -473,19 +473,19 @@ void int2048::RightMoveBy(int L) {
}
int big_move = L / int2048::kNum;
int small_move = L % int2048::kNum;
for (int i = 0; i < this->num_length - big_move; i++) {
for (int i = 0; i < this->buf_length - big_move; i++) {
this->val[i] = this->val[i + big_move];
}
for (int i = this->num_length - big_move; i < this->num_length; i++) {
for (int i = this->buf_length - big_move; i < this->buf_length; i++) {
this->val[i] = 0;
}
this->num_length -= big_move * int2048::kNum;
if (small_move == 0) return;
const static int kPow10[9] = {1, 10, 100, 1000, 10000,
100000, 1000000, 10000000, 100000000};
for (int i = 0; i < this->num_length; i++) {
for (int i = 0; i < this->buf_length; i++) {
this->val[i] /= kPow10[small_move];
if (i + 1 < this->num_length) {
if (i + 1 < this->buf_length) {
this->val[i] += this->val[i + 1] % kPow10[small_move] *
kPow10[int2048::kNum - small_move];
}