GDKOI2016 小學生數學題

2021-07-10 02:38:28 字數 2519 閱讀 3003

給定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 所...