麻烦帮忙看一看代码哪里有错误
#include <cstdio>
#define int unsigned long long
using namespace std;
int re() {
int s = 0, f = 1;
char ch = getchar();
while (ch > '9' || ch < '0') {
if (ch == '-')
f = -1;
ch = getchar();
}
while ('0' <= ch && ch <= '9')
s = s * 10 + ch - 48, ch = getchar();
return s * f;
}
void wr(int s) {
if (s < 0)
putchar('-'), s = -s;
if (s > 9)
wr(s / 10);
putchar(s % 10 + 48);
}
void wr(int s, char ch) {
wr(s), putchar(ch);
}
int n, k, m, a, b;
int T;
int arr[107], arr_ind = 0;
int ar[107], ar_ind = 0;
bool if_inar(int l, int r) {
int la = l / m;
int ra = r / m;
if (l % m == 0)
return 1;
if (la != ra)
return 1;
else
return 0;
}
void solve() {
arr_ind = 0;
n = re();
k = re();
m = re();
a = re();
b = re();
ar[0] = 1;
for (int i = 1; i <= 100; i++) {
ar[i] = ar[i - 1] * k;
if (ar[i] >= 1e18 || ar[i] < 0) {
ar_ind = i + 1;
break;
}
}
if ((n % m) == 0) {
wr(0, '\n');
return;
}
if (k == 1) {
puts("-1");
return;
}
while (n != 0) {
arr[arr_ind++] = n;
n /= k;
}
int ans = arr_ind * b;
for (int i = 0; i < arr_ind; i++) {
int num = arr[i];
for (int q = 0; q < ar_ind; q++) {
int l = ar[q] * num;
int r = ar[q] * num + ar[q] - 1;
if (if_inar(l, r)) {
int temp = i * b + q * a;
if (ans > temp)
ans = temp;
}
}
}
wr(ans, '\n');
}
signed main() {
T = re();
while (T--) {
solve();
}
return 0;
}