在 \(o(\frac } )\) 的時間內求出乙個積性函式的塊篩,要求在質數處的值為項數不多的多項式,質數冪處的計算方法只要不是太慢都可以接受。
於是依照這個思路,我給你乙個積性函式 \(f(p^k)\),考慮杜教篩。
假設我配對的是 \(g\),並且有 \(f * g = h\)。
考慮構造乙個 \(g\),使 \(h\) 在質數處的值為 \(0\),這樣一來有值的位置就都是 pn 了。而這樣的 \(g\) 很容易構造,容易知道 \(g(p)=-f(p)\)。
然後繼續構造使得 \(g(p^k)=0\)(\(k \geq 2\))。
於是 \(h\) 只在質數處有值,在每次杜教篩時使用爆搜的複雜度是對的(甚至可以開乙個陣列二分來做到 \(o(\sqrt n)-o(\log n)\)),接下來考慮如何計算 \(g\) 的字首和。
考慮類似 min25 篩的 dp。
我們令最開始時,不大於 \(\sqrt n\) 的 \(g(p)=1\),其他 \(g(p)=-f(p)\)。
於是先跑一遍質數字首和求出 \(f\) 的字首和。
然後我們從小到大列舉不大於 \(\sqrt n\) 的質數,然後讓 \(g(p)=-f(p)\),也就是令 \(g(p)-=f(p)+1\),然後暴力列舉來更新,大概就是:
\[g[n][k]=g[n][k-1]+(f(p)+1) \times g[\lfloor \frac n \rfloor][k-1]
\]初值為 \(g[n][0]=-\sum_f(p)\)。
於是做到了 \(o(\frac })\)。
不過翻了一下 cmd 的部落格,感覺這玩意兒早就被提出來了。。。
以及,應該是很容易優化到 \(o(n^)\) 的。
一節閱讀課
這是一節閱讀課 二狗讀的不是作文材料,是他和歡子過往,讀了他和她的過往 那是屬於他們兩人的紀念,屬於他們二人的夏天,是他們的曾經。流著淚說分手 回憶曾經擁有 嘴邊還有殘留的愛沒有問候 二狗不知不覺的就想起了金志文的一首歌叫 流著淚說分手 可能他自己也不明白為什麼。翻開一年前的日記,裡面夾著一張歡子曾...
試聽了一節吉他課
by long luo 又是乙個週末,說明這一周又飛速的過去了,我的時間沙漏的沙子實在是過的太快了,尤其是在這個年齡,幾乎是哭著送走每一天的。最近想做乙個專案 主頁和部落格應用。可以做到展示我寫的部落格,給自己2周的時間,我相信我可以完成的。這一周發生了很多事,周五晚上的年會,啥大獎都沒中。我希望下...
第一節課作業
1.c語言程式的基本語句能完成功能的體會 雖說c語言的基本語句不多,但通過複雜的組合能有非常強大的處理能力,在科技高度發展的今天,計算機在人們之中的作用越來越突出。而c語言作為一種計算機的語言,我們 學習它,有助於我們更好的了解計算機,與計算機進行交流,因此,c語言的學習對我們尤其重要。學習c程式語...