P8671 [蓝桥杯 2018 国 AC] 约瑟夫环 题解
思路
第一眼:直接把 P1996 约瑟夫问题 的代码稍微调一下就好。
这种方法显然要超时,因为这种写法的复杂度为
我们可以推出这个递推式,现在复杂度降为了
具体证明可以借鉴这篇文章。
Python Code:
n, k = map(int, input().split())
s = 0
for i in range(2, n+1): #从2开始循环
s = (s+k) % i #递推式
print(s+1) #f(0)为1,所以要加上1
AC记录,供参考