小 D 的家门口有一片果树林,果树上果实成熟了,小 D 想要摘下它们。 为了便于描述问题,我们假设小 D 的家在二维平面上的 (0, 0) 点,所有坐标范围的绝对值不超过 N 的整点坐标上都种着一棵果树。((0, 0) 这个点没有果树)
小 D 先站在 (0, 0) 处,正对着 (1, 0) 的方向。
每次摘果实时,小 D 会逆时针选择他能看到的第 K 棵还未摘取果实的果树,然后向着这个方向走去,在行走的过程中摘下沿路的所有的果树上的果树果实,直到走到果树林的边缘。
接下来,小 D 回到 (0, 0) 处,正对着上一次摘果实的果树的方向。
小 D 会重复这个过程,直到所有的果实都被摘取,小 D 感兴趣的是,最后一棵被摘下果实的果树是哪一棵?
注意小 D 不能看到被任何其他果树遮挡着的果树。
n,K<=1e5
Solution
考虑一共有多少条果树,也就是
(
∑
i
=
1
n
ϕ
(
i
)
+
1
)
∗
8
(\sum_{i=1}^{n}\phi (i)+1)*8
(i=1∑nϕ(i)+1)∗8
接下来每一次跳K就是一个经典的约瑟夫问题了。
有一种
O
(
n
)
O(n)
O(n)的递推做法
f
[
i
]
=
(
f
[
i
−
1
]
+
K
)
m
o
d
i
,
f
[
1
]
=
0
f[i]=(f[i-1]+K) \mod i ,f[1]=0
f[i]=(f[i−1]+K)modi,f[1]=0
意义就是考虑长度为i的约瑟夫问题,钦定从0开始,选择掉了K-1,剩下的是一个i-1的子问题,集合是
k
,
k
+
1...
n
−
1
,
0
,
1...
,
k
−
2
{k,k+1...n-1,0,1...,k-2}
k,k+1...n−1,0,1...,k−2,这个子问题的编号加上k就是当前的编号了。
Description小 D 的家门口有一片果树林,果树上果实成熟了,小 D 想要摘下它们。为了便于描述问题,我们假设小 D 的家在二维平面上的 (0, 0) 点,所有坐标范围的绝对值不超过 N 的整点坐标上都种着一棵果树。((0, 0) 这个点没有果树)小 D 先站在 (0, 0) 处,正对着 (1, 0) 的方向。每次摘果实时,小 D 会逆时针选择他能看到的第 K 棵还未摘取果实的果...