【2018沈阳现场赛k】

Let the Flames Begin- 约瑟夫环数学推导

题意:有 n 个人围成一个圈,从 1 开始报到第 k 个人出环,问第 m 个出环的人是谁,n、m、k <= 1e18 且 min(m,k)<= 2e6。

Sample Input
20
10 1 2
10 2 2
10 3 2
10 4 2
10 5 2
10 6 2
10 7 2
10 8 2
10 9 2
10 10 2
10 1 3
10 2 3
10 3 3
10 4 3
10 5 3
10 6 3
10 7 3
10 8 3
10 9 3
10 10 3

Sample Output

Case #1: 2
Case #2: 4
Case #3: 6
Case #4: 8
Case #5: 10
Case #6: 3
Case #7: 7
Case #8: 1
Case #9: 9
Case #10: 5
Case #11: 3
Case #12: 6
Case #13: 9
Case #14: 2
Case #15: 7
Case #16: 1
Case #17: 8
Case #18: 5
Case #19: 10
Case #20: 4

刚开始看到这道题的时候,感觉与计蒜客上有关队列的练习题十分类似,所以便利用队列的知识来解决,对于题目给出的测试案例,运行结果是正确的,可是提交上去
显示超时,百思不得其解,最终只有放弃。

后来看了题解才知道要使用约瑟夫问题的数学解,
代码:

猜你喜欢

转载自www.cnblogs.com/LJHAHA/p/10854951.html