給定n,
k,p ,求 (∑
ni=1
1i)modpk
若答案不存在則輸出-1n∗
pk≤10
18 p≤
105 p
為質數這道題的確是道不錯的數學題。設f
(n,k
)=(∑
ni=1
1i)modpk
那麼我們將1,
2,⋯n
分為兩類:
1. p
的倍數,設為集合
s2. 其他,設為集合t
那麼很顯然,集合
t中的數都與pk
互質,也就是說存在逆元。那麼f(
n,k)
的存在等價於
s 的貢獻是存在的。
我們考慮怎麼計算
s的貢獻。
很顯然的,s=
∑i=1
⌊np⌋
1i∗p
=1p∗
∑i=1
⌊np⌋
1i但我們這樣無法計算1p
。考慮乙個事實: 若a
modp=c
,那麼(k
∗a)mod(k
∗p)=
(k∗c
) 因此,我們可以考慮計算 (∑
i=1⌊
np⌋1
i)modpk+
1=f(
⌊np⌋
,k+1
) 然後s
=f(⌊
np⌋,
k+1)
p 當然,這裡有乙個細節,就是假如f(
⌊np⌋
,k+1
) 不是
p 的倍數,那麼f(
n,k)
就不存在了。
並且可以發現這樣遞迴下去,n∗
pk的值不變,所以pk
永遠不大於
1018
,但n 變為了⌊n
p⌋那麼我們就相當於可以遞迴到乙個子問題求解了。
接下來考慮集合
t 的貢獻。
先假設n
modp=p
−1,對於其他情況是類似的,只是可以少些邊界。
那麼集合
t 的數都是這樣的形式(a
+i∗p
),其中0≤
i≤⌊n
p⌋,0
<
a所以 t=
∑a=1
p−1∑
i=0⌊
np⌋(
a+i∗
p)−1
但這樣還是計不了啊。
讓我們考慮一下怎麼計1a
+i∗p
我們有以下式子: 1a
+i∗p
=11+
i∗pa
a 並且根據等比數列求和,當存在某個
i ,滿足xi
→0時,有 11
−x=1
+x+x
2+x3
+⋯那記a−
1=x ,我麼有 1a
+i∗p
=x∗[
1+(−
ixp)
+(−i
xp)2
+(−i
xp)3
+⋯]
又因為我們只需要計算
modp
k 下的答案,那麼1a
+i∗p
=x∗[
1+(−
ixp)
+(−i
xp)2
+(−i
xp)3
+⋯+(
−ixp
)k]
我們將這條式子代入到之前的式子中,可以得到 t=
∑a=1
p−1∑
i=0⌊
np⌋(
a+i∗
p)−1
=∑a=
1p−1
∑i=0
⌊np⌋
a−1∑
b=0k
(−ia
−1p)
b 我們交換一下列舉順序,可以發現: t=
∑a=1
p−1a
−1∑b
=0k(
−a−1
p)b∑
i=0⌊
np⌋(
i)b
由於保證了n∗
pk≤10
18 ,且p≤
105,我們就可以直接列舉a,
b ,可以發現,對於後面的式子就是乙個自然數冪和問題。並且式子與
a 無關,所以可以先用矩陣預處理出來。
那麼計算
t的貢獻的複雜度就是o(
p∗k+
k3)
考慮總體的複雜度,設t(
n,k)
為計算f(
n,k)
的複雜度,那麼有 t(
n,k)
=t(⌊
np⌋,
k+1)
+o(p
∗k+k
3)≈p
∗k∗l
ogn+
k3lo
gn
GDKOI2016 小學生數學題
求 n i 11 imodpk p 10 5 pk n 10 18 首先,給出一條性質a ac b modp bc modpc 具體證明非常簡單,只要考慮到aa c kp b k pc bc 那用處就是 amodp bacmodpc bc amodp c 那這道題我們借鑑計算階乘時的思想,提取出 p...
小學生數學題
psp2.1 personal software process stages 預估耗時 分鐘 實際耗時 分鐘 planning 計畫20 35 estimate 估計這個任務需要多少時間22 development 開發120 240 analysis 需求分析 包括學習新技術 6090 desi...
小學數學題
小學數學題1 usetyp 1 目標 擷取字串usetyp 注意,usetyp的長度是可變的 問題 求以上字串usetyp的長度 注意usetyp的長度是不固定 設usetyp的長度 p 已知1 號的索引位置x indexof 已知理論2 字串長度 最大索引 1 所以,p x 1 3 p x 2 所...