數論 數論分塊

2022-09-26 04:36:13 字數 1237 閱讀 5676

求解圖中紅點和綠點的總數之和。

求$$\sum_^k \space mod\space i$$?

如果縱軸的x乙個點乙個點進行移動的話,將會非常緩慢。

\(k\%i=k-[\fraci]\times i\)

於是有\(\sum_^k \space mod\space i=\sum_^k-[\fraci]\times i=n\times k-\sum_^i\times[\frac]\)

所以我們重點是要去求取\(\sum_^i\times[\frac]\)的值。

若在一段區間內\([\frac]\)保持不變,可以將其看作是乙個常數,而i是線性變化的,於是我們就可以通過等差數列的求和公式求出這一段區間的值。

而數論的分塊(暫時的理解)是快速通過這些區間的左端點來求出區間的右端點,從而降低時間損耗。

就如圖上的紅點變成綠點,而不需要把每乙個點都計算出答案。x1

2345

6789

1011

\([\frac]\)115

3221

1111

1對於任意乙個i,求乙個最大的j使得\([\frac]=[\frac]\)

且此時\(j=[\frac]}]\)

令\(k=[\frac]<=\frac\) 。(k為商,即矩形所對應的高度)

通過打表不難發現,\(\lfloor\frac ni\rfloor\)最多有$2\cdot\sqrt n \(種取值,所以,整除分塊的複雜度為\)o(\sqrt n)$。

證明:若\(i\le\sqrt n\),顯然最多有\(\sqrt n\)種取值(i的取值都只有\(\sqrt n\)種)。

若\(i>\sqrt n\),則\(\lfloor\frac ni\rfloor

整除分塊(數論分塊)

乙個有 趣的問題 求 sum n lfloor frac ni rfloor n leq 10 顯然不能直接做廢話 經過一番冷靜推理暴力打表 我們發現以下性質 1.large lfloor frac ni rfloor 最多只有 2 sqrt 種取值 證明 對於 i le sqrt,只有 sqrt ...

除法分塊 數論

問題 當我們暴力的時候時間複雜度為o n 但是我們可以把時間複雜度降到o sqrt n 這點時間優化在數論中可是不能小視的。除法分塊 所謂分塊,就是把一段數分成不同的區間,而這些區間的每乙個數除以同乙個數的值是相同的,所以我們就把這些區間統一處理,就不用再來乙個乙個遍歷 例 問題中我們假設n 10。...

數論分塊入門

目錄通常用來解決 sum n lfloor frac rfloor 這種問題。我們代入 n 10。i1 2345 6789 10 lfloor frac rfloor 105 3221 1111 可以看到後面有連續的 i lfloor frac rfloor 相同。呈現塊狀分布 每個塊的起點 l 和...