LuoguP2261 餘數求和 數論分塊

2022-05-02 02:18:08 字數 875 閱讀 5701

luogu

我看了一堆大佬的部落格才搞懂數論分塊

數論分塊適用於給定\(n,k\)求型如

\[\sum_^\left \lfloor \frac \right \rfloor f(l,r)

\]的式子

可將\(o(n)\)的複雜度降至\(o(\sqrt n)\)

首先定義\(l=1,r\)

其次有\[r=min(n,\left \lfloor \frac \right \rfloor} \right \rfloor)

\]可以在\(o(1)\)的時間內得出\(r\)

在\(l\sim r\)內所得的商是相同的(自行打表驗證)

容易證明(其實我也不會)這一段的商均為\(\left \lfloor \frac \right \rfloor\)

然後再\(l=r+1\)

貼個板題**

推一下式子

\begin

\sum_^k\ mod \ i &=\sum_^(k-i* \left \lfloor \frac \right \rfloor) \newline

&=n* k-\sum_(r-l+1)* \frac * \left \lfloor \frac \right \rfloor

\end

其中\(\left \lfloor \frac \right \rfloor\)是區間內的商,其他的是等差數列求和

公式推出來了**就好寫了

#includeusing namespace std;

#define ll long long

int main()

printf("%lld",ans);

return 0;

}

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 ...

P2261 CQOI2007 餘數求和

我是題面 題意還是很清晰,很容易理解 1e9範圍明顯不能暴力,除非你能把常數優化到 frac1 但我實在想象不到用了這麼多取模怎麼把常數優化下去 我們可以把 k i 變成 k k i i 整除 那麼總的和也就從 sum k i 變成了 sum n k k i i 又可以轉化為 nk sum n 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 ...