上次寫部落格不知道是什麼時候了,我也不知道為什麼突然想寫部落格若\(n=\prod p_i^\)定義\(\tau(n)=\prod (-1)^,\xi(n)=\sum_\tau(d)\)
我們需要得到\(\sum_^n\sum_^m \xi(ij)\)
\(n,m\leq 10^\)
先推式子,容易得到\(\tau(n)\)的狄拉克雷生成函式為\(\prod \frac}=\prod\frac\)
\(\xi=i*\tau=\prod (\frac)(\frac)=\prod\frac}-1}\)
所以\(\xi(n)=[\lfloor\sqrt n\rfloor^2=n]\)
設\(h(n)=\mu^2(n)\)
\[\sum_^n\sum_^m\xi(ij)\\
=\sum_^n h(i)\left\lfloor\sqrt}\right\rfloor \left\lfloor\sqrt}\right\rfloor\\
\]由於\(h\)在質數處的取值與\(i\)相同,所以我們考慮使用\(\mathbb\)篩法計算\(h(i)\)的字首和
\[h=\prod(1+\frac)\\
i=\prod\frac\\
u=h/i=\prod\frac-1}}=\prod(1-\frac})\\
\]發現\(u(n)\)的值非常好求,為\(\xi(n)\mu(\sqrt n)\),所以整除分塊+\(\mathbb\)篩法計算\(h(i)\)的字首和即可
下面計算時間複雜度:
\]但是實際效率非常的高,可以在1s內跑過\(10^\)
#includeusing namespace std;
# define ll long long
# define read read1()
# define type templatetype t read1()
# define fre(k) freopen(k".in","r",stdin);freopen(k".out","w",stdout)
int tot,prime[1000005];
ll n,m;
bool vis[1000005];
void init(const int n=1000000) }}
ll getv(ll s,int w,int p)return t;
}ll sqrt(ll x)
ll getr(ll v)
int main()cout《第一次寫\(\mathbb\)篩,居然沒出鍋!
莫名其妙的語法報錯
今天在使用python的parser模組時,遇到這樣的問題 解析自帶的example好好的,但解析我的檔案時就報語法錯誤。這個問題在以前寫編譯器時也出現過。根據以前的經驗,估計是unix和windows平台的換行不同造成的。用ultraedit將所有的換行都變成unix格式的。問題仍然存在。然後想到...
莫名其妙的問題(3)
使用gitcafe 類似github 時,關於windows下如何github ssh 公鑰的問題 1.安裝git,從程式目錄開啟 git bash 2.鍵入命令 ssh keygen t rsa c email email.com email email.com 是github賬號 3.提醒你輸入...
莫名其妙的問題(1)
今天遇到乙個比較莫名其妙的問題,我們先看一下事發原因 select td.id cbbaa.id from cmcs3 bank trade detail td,cb ba bank account cbbaa where td.id cbbaa.id 這樣兩張表,聯合查詢,並且其中有相同的字段 i...