一道莫名其妙的數學題

2022-10-09 02:18:11 字數 1274 閱讀 3031

上次寫部落格不知道是什麼時候了,我也不知道為什麼突然想寫部落格

若\(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...