HDU 1695 莫比烏斯思想基礎題

2022-01-19 20:38:15 字數 917 閱讀 9602

題目傳送門:

莫比烏斯反演參考資料:

我們現在就是求f(1),即x為1,所以就是所有的d都滿足,即列舉所有的d~(1-b),注意減去重複的部分。

#include using

namespace

std;

const

int maxn = 1000000

;bool check[maxn+10

];int prime[maxn+10

];int mu[maxn+10

];void

moblus()

for(int j = 0; j < tot; j++)

else}}

}int

main()

b /=k;

d /=k;

if(b >d)

swap(b,d);

long

long ans1 = 0

;

for(int i = 1; i <= b; i++)

ans1 += (long

long)mu[i]*(b/i)*(d/i);

long

long ans2 = 0

;

for(int i = 1; i <= b; i++)

ans2 += (long

long)mu[i]*(b/i)*(b/i);

ans1 -= ans2/2

; printf(

"case %d: %i64d\n

",icase,ans1);

}return0;

}

然後就是可以用分塊優化了

hdu1695 容斥原理 莫比烏斯反演

給定兩個數b,d,問 1,b 和 1,d 區間上有多少對互質的數。x,y 和 y,x 算乙個。對於 1,b 部分,用尤拉函式直接求。對於大於b的部分,求n在 1,b 上有多少個互質的數,用容斥原理。主要學習容斥原理的寫法,本題使用dfs。容斥原理複雜度比較高,是指數複雜度。輸出長整型不能用lld,必...

莫比烏斯函式與莫比烏斯反演

1.1 莫比烏斯函式 莫比烏斯函式可以看做乙個輔助函式,它在莫比烏斯反演公式中用到。1.2 莫比烏斯反演 莫比烏斯反演公式是 根據和函式來求算數函式的乙個公式。1.3 算數函式 所有在正整數上運算的函式稱為算數函式。1.4 和函式 設 f 是算數函式,f 的和函式為n的所有約數的算數函式之和。1.5...

hdu5072 莫比烏斯

給出n個數,問其中有多少三元組 a,b,c 使得 a,b b,c a,c 1 or a,b 1 and a,c 1 and b,c 1 n 10 5,ai 10 5.首先可以把問題抽象為有n個點,兩兩連邊,有紅邊和藍邊,問三邊同色三角形有多少。然後考慮算反面,發現只要找從乙個點出發的兩種邊分別有幾條...