B3855

· · 题解

Source & Knowledge

2023 年 09 月语言月赛,由洛谷网校入门计划/基础计划提供。

文字题解

题意简述

计算迭代式 x_i = \left\lfloor\frac{x_{i - 1} + a}{a}\right\rfloor,直到相邻两次迭代的结果相同。

解析

直接使用 while 循环模拟上面的迭代式即可。使用一个变量 pre 表示上次迭代后 x 的值。只要本次迭代的结果不等于 pre 就一直进行迭代。

int pre = -1;
while (pre != x) {
  cout << x << '\n';
  pre = x;          // 本次迭代结束后,x 原来的值就变成了上次迭代的结果。
  x = (x + a) / a;
}

与 A 题相同,虽然 xa 都在 int 范围内,但是二者的和可能会爆掉 int,所以要开 long long。

视频题解