P11180 [ROIR 2018] 删除数字 (Day2)

题目描述

**译自 ROI 2018 Regional. Day2 T1.** ***[Удаление чисел](http://neerc.ifmo.ru/school/archive/2017-2018/ru-olymp-regional-2018-day2.pdf)*** 给定一个从 $1$ 到 $n$ 的自然数序列和一个自然数 $k$。通过一个或多个操作删除序列中的数字。在每一个操作中,按升序查看剩余的数字,每隔 $k$ 个数字删除一个。如果在某一个操作之后剩余的数字少于 $k$ 个,则删除过程结束。 需要确定在第几个操作删除数字 $n$,或者判断在删除过程结束前数字 $n$ 是否不会被删除。 例如,设 $n=13, k=2$。 - 第一个操作将删除数字 $2, 4, 6, 8, 10, 12$,剩下的数字是 $1, 3, 5, 7, 9, 11, 13$。 - 第二个操作将删除数字 $3, 7, 11$,剩下的数字是 $1, 5, 9, 13$。 - 第三个操作将删除数字 $5, 13$,剩下的数字是 $1, 9$。 - 第四个操作将删除数字 $9$,剩下的数字是 $1$。由于只剩下一个数字,删除过程结束。 因此,数字 $13$ 将在第三个操作被删除。 需要编写一个程序,根据给定的 $n$ 和 $k$ 确定数字 $n$ 在第几个操作被删除。

输入格式

第一行输入包含一个整数 $n$ $(3 \leq n \leq 10^{18})$。 第二行输入包含一个整数 $k$ $(2 \leq k \leq 100, k < n)$。

输出格式

输出一个整数,表示数字 $n$ 被删除的操作编号;如果数字 $n$ 不会被删除,则输出 $0$。

说明/提示

详细子任务附加限制及分值如下表所示。 | 子任务 | 分值 | $n$ 的限制 | $k$ 的限制 | | :-: | :-: | :-: | :-: | | $1$ | $16$ | $3 \leq n \leq 1000$ | $k=2$ | | $2$ | $10$ | $3 \leq n \leq 10^{18}$ | $k=2$ | | $3$ | $14$ | $3 \leq n \leq 1000$ | $2 \leq k \leq 100, k < n$ | | $4$ | $20$ | $3 \leq n \leq 10^{6}$ | $2 \leq k \leq 100, k < n$ | | $5$ | $40$ | $3 \leq n \leq 10^{18}$ | $2 \leq k \leq 100, k < n$ |