①处应填( )
(1) (进制减半) 给定 (n, m),再给定一个 (mn) 进制下的数 A,其各个数位上的数按照从高位到低位的顺序给出,请你将其转化为 n 进制,并同样按照从高位到低位的顺序输出。 输入的第一行依次为 n、m 和 A 的位数 d,接下来 d 个数 (ad, ad-1, ....., a1) 从高位到低位描述各个数位上的数。 数据满足 (2 <= n, m <= 10),(1 <= d <= 18),(0<= A < 2^63),对于所有 (1 <= i <= d),(0 <= ai < mn)。 以下程序按“逐位除以 n”的方法完成进制转换。请补全程序。
#include <iostream>
constexpr int N = 100005;
long long b[N];
int main() {
long long n, m, d;
std::cin >> n >> m >> d;
int len = 1;
for (int i = 0; i < d; i++) {
long long x;
std::cin >> x;
for (int j = len; j >= 1; j--)
b[j] = ___①___;
b[0] = ___②___;
len++;
for (int j = 0; j < len; j++)
if (b[j] >= n) {
b[j + 1] += ___③___;
b[j] = ___④___;
if (j + 1 == len) len++;
}
}
while (___⑤___) len--;
for (int i = len - 1; i >= 0; i--)
std::cout << b[i] << ' ';
return 0;
}
b[j] * n
b[j] * m
b[j - 1] * n
b[j - 1] * m