洛谷 P2261 CQOI2007 餘數求和

2021-09-29 04:09:00 字數 2403 閱讀 7647

前兩天肝了整整兩天的fft,部落格暫咕

今天打算先肝個莫隊,於是複習一下整除分塊

題面:給出n,k

(1≤n

,k≤1

09

)n,k(1\le n,k\le 10^9)

n,k(1≤

n,k≤

109)

,求∑i=1

nkmo

di

\large\sum\limits_^k\mod i

i=1∑n​

kmod

i推一波公式:

∑ i=

1nkm

odi=

∑i=1

nk−i

∗⌊ki

⌋=nk

−∑i=

1ni∗

⌊ki⌋

\begin &\sum\limits_^k\mod i\\ =&\sum\limits_^k-i*\lfloor\frac\rfloor\\ =&nk-\sum\limits_^i*\lfloor\frac\rfloor\\ \end

==​i=1

∑n​k

modi

i=1∑

n​k−

i∗⌊i

k​⌋n

k−i=

1∑n​

i∗⌊i

k​⌋​

推到這裡,觀察一下⌊ki

⌋\lfloor\frac\rfloor

⌊ik​

⌋,發現:到了後面i

ii大的時候⌊ki

⌋\lfloor\frac\rfloor

⌊ik​

⌋可能會保持不變!

重點來看⌊ki

⌋\lfloor\frac\rfloor

⌊ik​

⌋會在什麼區間內保持不變:

設⌊ ki

⌋=⌊k

j⌋=q

(i

\lfloor\frac\rfloor=\lfloor\frac\rfloor=q~(i⌊i

k​⌋=

⌊jk​

⌋=q(

i則有q i+

x=qj

+y=k

(0≤x

0≤

y

qi+x=**+y=k~(0\le xqi

+x=q

j+y=

k(0≤

x0≤y最極端的情況便是y=0

y=0y=

0則qi+x

=qj=

kqi+x=**=k

qi+x=q

j=k肉眼可見j=k

qj=\frac

j=qk

​考慮到可能q∤j

q\nmid j

q∤j所以j=⌊

kq

⌋j=\lfloor\frac\rfloor

j=⌊qk​

⌋對於每乙個x

xx,它所在的⌊ki

⌋\lfloor\frac\rfloor

⌊ik​

⌋區間上界就是k⌊k

x⌋

\frac\rfloor}

⌊xk​⌋k

​這樣就可以通過等差數列對每一塊的i∗⌊

ki

⌋i*\lfloor\frac \rfloor

i∗⌊ik​

⌋進行計算了

每塊計算公式:

( l+

r)∗(

r−l+

1)2∗

(k/l

)\frac*(k/l)

2(l+r)

∗(r−

l+1)

​∗(k

/l)肉眼可見初始塊一定是[1,

1]

[1,1]

[1,1

]遞推式:r=⌊

k⌊kl

⌋⌋,l

=r+1

r=\lfloor\frac\rfloor}\rfloor,l=r+1

r=⌊⌊lk

​⌋k​

⌋,l=

r+1

有乙個細節:

如果l

>

kl>k

l>

k,那麼⌊ki

⌋=

0\lfloor\frac\rfloor=0

⌊ik​⌋=

0,會導致除以零

由此我們要加乙個特判

#include

using

namespace std;

inline

intmin

(const

int a,

const

int b)

intmain()

這就是整除分塊的一種

洛谷P2261 CQOI2007 餘數求和

傳送門 題目背景 數學題,無背景 題目描述 給出正整數 n,k計算k取模1 n的和 數學好題,短小精悍 暴力能60,之後考慮優化。如果你學過一點點數學,那麼你就知道 k i k k i i 而且不難發現,k i 必定是連續的,且在一定的i的範圍內這個值是不變的,類似於乙個階梯函式,而我們闊以通過k ...

洛谷P2261 CQOI2007 餘數求和

給出正整數n和k,計算g n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。例如g 10,5 5 mod 1 5 mod 2 5 mod 3 5 mod 4 5 mod 5 5 mod 10 0 1 2 1 0 5 5 5 5 5 29...

P2261 CQOI2007 餘數求和

數學題,無背景 給出正整數n和k,計算g n,k k mod 1 k mod 2 k mod 3 k mod n的值,其中k mod i表示k除以i的餘數。例如g 10,5 5 mod 1 5 mod 2 5 mod 3 5 mod 4 5 mod 5 5 mod 10 0 1 2 1 0 5 5 ...