2717 「ROIR 2018 Day2」删除数字

内存限制:512 MB 时间限制:1000 ms

题目描述

译自 ROI 2018 Regional. Day2 T1. Удаление чисел

给定一个从 $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$ $1$
$3$ $14$ $3 \leq n \leq 1000$ $2 \leq k \leq 100, k < n$ $1$
$4$ $20$ $3 \leq n \leq 10^{6}$ $2 \leq k \leq 100, k < n$ $1, 3$
$5$ $40$ $3 \leq n \leq 10^{18}$ $2 \leq k \leq 100, k < n$ $1\sim 4$

样例

样例输入 1

13 2

样例输出 1

3