Official

E - Sequence of Multiples Editorial by evima


Below, we assume that \(A\) is an optimal sequence, where \(A_i\) is the smallest multiple of \(i\) greater than \(A_{i-1}\) for \(i\geq 2\).


[1] A solution in \(O(X^{1/2})\) time

We first explain an \(O(X^{1/2})\) solution (which is expected to get TLE).

Let a sequence \(B\) defined by \(B_i = A_i / i\). We have \(B_{i+1} = \lfloor\frac{iB_i}{i+1}\rfloor + 1 = B_{i} + 1 - \lceil\frac{B_i}{i+1}\rceil\).

It is easy to see the following:

  • \(B_i\) is non-increasing
  • \(B_{i+1} = B_i\) if \(B_i < i\)

Since \(B_i\) is non-increasing, there is \(n\) such that \(B_n < n\). Afterward, it is a constant sequence, where the sum can be computed altogether. Thus, the problem can be solved by computing the sequence \(B\) until \(B_n < n\) holds.

Let us evaluate the complexity of this solution, that is, the size of \(n\) such that \(B_n < n\). If we roughly consider that \(B_{i+1}\) and \(\frac{iB_i}{i+1}\) are close enough, that is, \(iB_i\) is almost a constant, it seems probable that \(B_n < n\). A more detailed argument can, for example, prove the following:

  • \(B_i < \frac{X}{i} + i\) for every \(i\).

Specifically, if we let \(m = \lceil \sqrt{X} \rceil\), we have \(B_m < \frac{X}{m} + m \leq 2m\), and it follows from \(B_{2m} \leq B_m < 2m\) that \(B_n < n\) for \(n = 2m = 2\lceil \sqrt{X} \rceil\). Especially, the time complexity of the solution above is \(O(X^{1/2})\).


[2] A solution in \(O(X^{1/3})\) time

Let us try to put together some computations in [1].

Since \(B_i - B_{i+1} = \lceil \frac{B_i}{i+1}\rceil - 1\) and \(B\) is non-increasing, it can be seen that the following holds:

  • \(B_1 - B_2 \geq B_2 - B_3\geq \cdots\)

Let us deal with \(B_n, \ldots, B_{m-1}\) where \(B_n - B_{n+1} = \cdots = B_{m-1} - B_m\) holds altogether.

For a given \(n\), the range of \(i\) where \(B_n - B_{n+1} = B_i - B_{i+1}\) holds can be found in \(O(1)\) time. Additionally, \(\sum_{i=n}^{m-1} iB_i\) can be found in \(O(1)\) time, too (by using formulae such as \(\sum_{k=0}^{n-1}k^2=\frac{1}{6}(n-1)n(2n-1)\), or polynomial interpolation, etc).

In the end, if \(B_i - B_{i+1}\) takes \(n\) different values, the problem can be solved in \(O(n)\) time.

Below is a proof that \(B_i - B_{i+1}\) takes \(O(X^{1/3})\) different values.

  • Let \(n = \lceil X^{1/3}\rceil\). Then, from the evaluations in [1], we have \(B_n < X^{2/3} + n\).
  • Thus, we have \(B_n - B_{n+1} = \lceil \frac{B_n}{n+1}-1\rceil \leq \lceil \frac{X^{2/3}}{n+1}\rceil\leq n\).
  • There are at most \(n-1\) different values among \(B_1 - B_2, \ldots, B_{n-1} - B_{n}\), and at most \(n+1\) different values after \(B_n - B_{n+1}\) (because they are among \(0, 1, \ldots, n\)).
  • Therefore, \(B_i - B_{i+1}\) takes at most \(2n = 2 \lceil X^{1/3}\rceil\) different values.

posted:
last update: