乙個有♂趣的問題:
求\(\sum_^n \lfloor \frac ni \rfloor\) ,\(n \leq 10^\)顯然不能直接做廢話
經過一番冷靜推理暴力打表 ,我們發現以下性質:
$ 1. \large \lfloor \frac ni \rfloor$最多只有\(2\sqrt\)種取值
證明:對於\(i\le \sqrt,\) 只有 \(\sqrt\) 種,對於 \(i>\sqrt,\large<\sqrt\),也只有 \(\sqrt\) 種取值,共計 \(2 \sqrt\) 種\(\;\;\box\)
\(2.\) 設 $\large \lfloor \frac n \rfloor $ 與 \(\large \lfloor \frac ni \rfloor\) 相等,則 \(i'\) 的最大值為 $\large \left \lfloor \frac n \right \rfloor $
證明:設 \(\large=k\) ,於是可以寫成 \(ki+p=n,1\le p的形式,若 \(\large \rfloor}=k\) ,於是有 \(k(i+d)+p'=n\) ,可以得到 \(p'=p-kd\) ,則 \(d\) 能取的最大值為 \(\large \lfloor \frac pk \rfloor\) ,於是 :
\[\begini'&=i+d_ \\ &=i+\lfloor \frac pk \rfloor \\&=i+\left \lfloor \frac \right \rfloor \\ &=i+\left \lfloor \frac \right \rfloor \\ &=\left \lfloor i + \frac \right \rfloor \\ &=\left \lfloor \frac + \frac \right \rfloor \\ &=\left \lfloor \frac n \right \rfloor \quad \quad\box\end
\]然後,設兩個指標 \(l\) 和 \(r\) , \(l\) 的初始值為 \(1\) ,每次令 \(\large r=\left \lfloor \frac n \right \rfloor\) ,將 \(\large (r-l+1)\cdot \lfloor \frac nl \rfloor\) 累加至答案中 ,再令 \(l=r+1\)
由於 \(\large \lfloor \frac nl \rfloor\) 只有 \(2\sqrt n\) 種取值 ,且單調遞減,則最多只有 \(2\sqrt n\) 個取值不同的段,時間複雜度為 \(o(\sqrt n)\)
數論 整除分塊
sum n lfloor frac rfloor 如果我們暴力求解,複雜度是 o n 的,那程式幾天也跑不完。思考一下,其實我們的瓶頸,就是出於 i 太多了。那列舉什麼量,才能讓列舉的數量變少?我們把 f x frac y lfloor f x rfloor 的圖象畫了出來。明顯地看到,在 x 比較...
數論分塊與整除相
引理一 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 le...
牛客NC13221 數碼 整除分塊(數論分塊)
牛客nc13221 數碼 整除分塊 數論分塊 鏈結 題目描述 給定兩個整數 l 和 r 對於所有滿足1 l x r 10 9 的 x 把 x 的所有約數全部寫下來。對於每個寫下來的數,只保留最高位的那個數碼。求1 9每個數碼出現的次數。輸入描述 一行,兩個整數 l 和 r 1 l r 10 9 輸出...