第39280题 组合题
完善程序(第一题):进制减半——m 进制转 n 进制

(1)(进制减半)给定 $n$、$m$,再给定一个 $mn$ 进制下的数 $A$,其各个数位上的数按照从高位到低位的顺序给出,请你将其转化为 $n$ 进制,并同样按照从高位到低位的顺序输出。 输入的第一行依次为 $n$、$m$ 和 $A$ 的位数 $d$,接下来 $d$ 个数 $a_d, a_{d-1}, \ldots, a_1$ 从高位到低位描述各个数位上的数。 数据满足 $2 \le n, m \le 10$,$1 \le d \le 18$,$0 \le A < 2^{63}$,对于所有 $1 \le i \le d$,$0 \le a_i < 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;
}
{{ option.label }}
子题{{ index + 1 }} {{ child.type_label }}
{{ option.label }}
✓ 正确 ◐ 部分正确 ✗ 错误
程序运行统计
暂无判题统计
知识点:
提交{{ questionInfo.stats ? questionInfo.stats.submit_count : 0 }}次 正确率{{ statsAccuracy }}%
答案解析