【數論】整數分塊及詳細證明


update:添加了數學公式markdown

洛谷博客地址:https://www.luogu.com.cn/blog/KingofNight/post-shuo-lun-zheng-shuo-fen-kuai-ji-yang-xi-zheng-ming

一.復雜度證明

引理一:對於任意一個正整數\(x\),\([\frac{x}{d}](1\leq d\leq x)\)

的種類的數量在\(\sqrt{x}\)

證明:將\(d\)分為小於等於\(\sqrt{x}\)與大於\(\sqrt{x}\)的兩部分

1.當\(d\leq\sqrt{x}\)時:

假設每個\([\frac{x}{d}]\)都不一樣,最多也就\(\sqrt{x}\)個值

2.當\(d>\sqrt{x}\)時:

\([\frac{x}{d}]<\sqrt{x}\)

\([\frac{x}{d}]\)的取值同樣不超過\(\sqrt{x}\)

∴個數在根號\(x\)級(不超過\(2*\sqrt{x}\))

即,整數分塊的復雜度為\(O(\sqrt{x})\)

二.一堆引理及證明

引理二:對於所有使\([\frac{x}{i}]=C\)\(i\),其集合一定是一段連續的整數區間

證明:假設不是連續區間,則一定存在一個\(l<t<r\),

使得\([\frac{x}{l}]=[\frac{x}{r}]\)\([\frac{x}{l}]\neq[\frac{x}{t}]\)

\(t>l\)

\([\frac{x}{t}]<[\frac{x}{l}]\)

\(t<r\)

\([\frac{x}{t}]>[\frac{x}{r}]\)

\([\frac{x}{l}]=[\frac{x}{r}]\)

假設不成立

∴所有使\([\frac{x}{i}]=C\)\(i\),其集合一定是一段連續的整數區間

引理三:對於所有使\([\frac{x}{i}]=C\)\(i\),如果其集合為\([l,r]\),那么我們只需要知道\(l\),就可以求出\(C\)\(r\)

證明一:

\([l,r]\)內所有的數都可以使\([\frac{x}{i}]=C\)(定義)

\(C=[\frac{x}{l}]\)

小引理:\(r=[\frac{x}{[\frac{x}{l}]}]\)

一.證明\([\frac{x}{A}]=C\)

\(A=[\frac{x}{[\frac{x}{l}]}]=[\frac{x}{C}]\)

所以\(AC\)可以表示為:

\(AC=x-k(0<=k<A,C)\)

\(A=\frac{x-k}{C}\)

\(\frac{x}{A}=\frac{Cx}{x-k}\geq\frac{Cx}{x}=C\)

假設\(\frac{x}{A}\geq C+1\)

\(AC\leq x-A\)

\(AC=x-k\)

又∵\(k<A\)

∴假設不成立

\(\frac{x}{A}<C+1\)

綜上所述:\(C\leq \frac{x}{A}<C+1\)

\([\frac{x}{A}]=C\)

二.證明\(A\)為最大的使\([\frac{x}{i}]=C\)成立的數

\(AC=x-k(0\leq k<A,C)\)

假設\(A\)不是最大令\([\frac{x}{i}]=C\)成立的數,由引理二知:

\(A+1\)一定可以使\([\frac{x}{i}]=C\)

\((A+1)*C=x-g(0\leq g<A,C)\)

\(AC+C=x-g\)

又∵\(AC=x-k\)

\(C=k-g\)

\(0\leq k,g<C\)

∴假設不成立

∴命題得證

綜上所述:\(A=[\frac{x}{C}]\)是最大的令\([\frac{x}{i}]=C\)成立的數

\(A\)滿足r的所有性質

\(r=A\)\(r=[\frac{x}{C}]=[\frac{x}{[\frac{x}{l}]}]\)

∴引理三得證

三.實現方法

由引理三知,我們只需要知道\(l\)就可以\(O(1)\)算出區間\([l,r]\)使得對於\(\forall i\in [l,r]\)都有\([\frac{x}{i}]=[\frac{x}{l}]\)且對於\(\forall i\notin [l,r]\)都有\([\frac{x}{i}]\neq[\frac{x}{l}]\)

而,如果我們要枚舉區間\([L,R]\)的所有整數,那么第一個區間的\(l\)一定是\(L\)!

那么之后的區間呢?

不就是前一個區間的"\(r\)"加個一嘛!

∴我們就可以在\(\sqrt{x}\)枚舉完整個區間了!

PS:一個區間的定義:具有一個范圍[l,r],且滿足對於\(\forall i\in [l,r]\)都有\([\frac{x}{i}]=[\frac{x}{l}]\)且對於\(\forall i\notin [l,r]\)都有\([\frac{x}{i}]\neq[\frac{x}{l}]\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM