學習筆記 函式

2022-09-19 17:00:13 字數 1394 閱讀 5303

省隊集訓看著台上的老師講了一上午的莫比烏斯反演,整個人都是懵的,因為我看不清黑板和投影!!!

回家後本來想晚上自學完的,卻奈何自己是個拖延症患者,只敲了μ函式(說多了都是淚qaq)

**的思路如下:

1.算質因數個數時因為有將1算上,所以每次都需要將符號取反;

2.為什麼這樣做能算出μ(a)=0呢?證明如下(如果有錯可以指出,但別打我qaq):

①先證明:已知a=p1×p2×p3×...×pn×pi(1<=i<=n且p為質數)

則μ(a)=σμ(i)(1<=i<=n)+σμ(pipj)(1<=i為什麼不列舉μ(pi2×...)呢?因為它的值是0,不影響結果)

可以發現,上式中μ()值為±1的各有n個(因為μ(pi

2)=0),相抵消一下,μ(a)就等於0了。

②其次再證明:已知a=p1

b1×p2

b2×p3

b3×...×pn

bn(bi≠0且max(bi)>1)且μ(a)=0

則令a'=p1

b1×p2

b2×p3

b3×...×pn

bn×pi(1<=i<=n)

μ(a')=μ(a)=0,因為它們滿足μ(j)≠0的因數j是一樣的,所以μ()值也是一樣的。

3.最後證明|μ(i)|=1時,它的符號是正確的。

已知a=p1p2p3...pnpn+1,a'=p1p2p3...pn,

因為每次確定μ()時,都會對它的符號取反,所以μ(a')=-σi(i|a且i≠a),即μ(a')+σi(i|a且i≠a)=0。

設x=μ(pn+1)+σμ(pn+1pi)(1<=i<=n)+σμ(pn+1pipj)(1<=in+1pipjpk)(1<=i

(x表示將pn+1

分別跟p1-pn

中0、1、2、...(n-1)個不同的素數組合而成的μ值的和),則x=σ(-1)i+1×c(i,n)(0<=i<=n-1)。

所以-μ(a)=x,即μ(a)=-x。

設x'=σ(-1)i+1×c(i,n)(0<=i<=n),

觀察楊輝三角形得

σc(2i,n)(1<=i<=n/2)=σc(2i+1,n)(0<=i<=(n-1)/2)=上一行所有數之和(如圖箭頭所示),正負互相抵消,故x'=0。

所以x=x'-(-1)n+1×c(n,n)=-(-1)n+1

。即μ(a)=-x=(-1)n+1

,符合μ函式定義。

時間複雜度:o(nlogn) 

#define n 10000001

int mu[n],n;

inline void get_mu()

}

函式指標學習筆記

函式指標學習筆記 昨天和室友討論了函式指標的使用方法,感覺收穫挺大的,於是把它整理成筆記,發到部落格裡。就目前所接觸過的情況,我覺得函式指標用法主要有以下兩種 一 以相同的介面,方便地進行各個模組的替換。二 把函式指標作為形參,傳給封裝好的模組,實現使用者不同的功能。這樣說有點抽象了,下面對這兩種應...

Shell學習筆記 函式

1.定義函式 function funcname function 關鍵字有沒有都行.2.函式呼叫 funcname 直接寫函式名就可以呼叫函式了 如果有引數的話可以放在函式名的後邊,以空格隔開 funcname arg1 arg2 arg3.這些引數在函式定義內部的使用是通過 1,n表示,最多到9...

Lua學習筆記函式

數字型for 的格式,exp3預設為1 for var exp1 exp2 exp3 do 執行體 end泛型for迭代的型別,標準庫中提供了幾種迭代器 io.lines 用於迭代檔案中每行 pairs 迭代table中元素 ipairs 迭代 陣列 元素 string.gmatch 迭代字串中單詞...