數論分塊與整除相

2022-05-02 01:09:19 字數 1718 閱讀 2541

引理一

$$\forall a,b,c\in\mathbb,\left\lfloor\frac\right\rfloor=\left\lfloor\frac\right\rfloor}\right\rfloor$$

略證:\begin &\frac=\left\lfloor\frac\right\rfloor+r(0\leq r<1)\\ \rightarrow &\left\lfloor\frac\right\rfloor =\left\lfloor\frac\cdot\frac\right\rfloor =\left\lfloor \frac\left(\left\lfloor\frac\right\rfloor+r\right)\right\rfloor =\left\lfloor \frac\right\rfloor} +\frac\right\rfloor =\left\lfloor \frac\right\rfloor}\right\rfloor\\ &&\square \end

引理二$$\forall n \in n, \left|\left\ \rfloor \mid d \in n \right\}\right| \leq \lfloor 2\sqrt \rfloor$$

$|v|$表示集合$v$的元素個數

略證:對於$d \leq \left \lfloor \sqrt \right \rfloor$,$\left \lfloor \frac \right \rfloor$有$\left \lfloor \sqrt \right \rfloor$種取值.

對於$d \geq \left \lfloor \sqrt \right \rfloor$,有$\left \lfloor \frac \right \rfloor \leq \left \lfloor \sqrt \right \rfloor$,也只有$\left \lfloor \sqrt \right \rfloor$種取值.

數論分塊

數論分塊的過程大概如下:考慮含有$\left \lfloor \frac \right \rfloor$的求和式子($n$為常數)

對於任意乙個$i$($i \leq n$),我們需要找到乙個最大的$j$($i \leq j \leq n$),使得$\left \lfloor \frac \right \rfloor = \left \lfloor \frac \right \rfloor$.

那麼$j = \left \lfloor \frac \right \rfloor} \right \rfloor$.

略證:\begin &\left\lfloor\frac\right\rfloor \leq \frac\\ \rightarrow &\left\lfloor\frac\right\rfloor }\right\rfloor \geq \left\lfloor\frac }\right\rfloor = \left\lfloor i \right\rfloor=i \\ \rightarrow &i\leq \left\lfloor\frac\right\rfloor }\right\rfloor\\ &&\square \end

即$j = \left \lfloor \frac \right \rfloor} \right \rfloor$.

利用上述結論,我們每次以$[i,j]$為一塊,分塊求和即可.

實現快速計算$\sum \left \lfloor \frac \right \rfloor$的方法:

1

for(int l = 1, r; l <= n;l = r+1)2

整除分塊(數論分塊)

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

數論 整除分塊

sum n lfloor frac rfloor 如果我們暴力求解,複雜度是 o n 的,那程式幾天也跑不完。思考一下,其實我們的瓶頸,就是出於 i 太多了。那列舉什麼量,才能讓列舉的數量變少?我們把 f x frac y lfloor f x rfloor 的圖象畫了出來。明顯地看到,在 x 比較...

牛客NC13221 數碼 整除分塊(數論分塊)

牛客nc13221 數碼 整除分塊 數論分塊 鏈結 題目描述 給定兩個整數 l 和 r 對於所有滿足1 l x r 10 9 的 x 把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求1 9每個數碼出現的次數。輸入描述 一行,兩個整數 l 和 r 1 l r 10 9 輸出...