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$ |