题目描述
译自 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≤n≤1018)。
第二行输入包含一个整数 k (2≤k≤100,k<n)。
输出格式
输出一个整数,表示数字 n 被删除的操作编号;如果数字 n 不会被删除,则输出 0。
13
2
3
提示
详细子任务附加限制及分值如下表所示。
子任务 |
分值 |
n 的限制 |
k 的限制 |
1 |
16 |
3≤n≤1000 |
k=2 |
2 |
10 |
3≤n≤1018 |
3 |
14 |
3≤n≤1000 |
2≤k≤100,k<n |
4 |
20 |
3≤n≤106 |
5 |
40 |
3≤n≤1018 |