題目傳送門:
莫比烏斯反演參考資料:
我們現在就是求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個點,兩兩連邊,有紅邊和藍邊,問三邊同色三角形有多少。然後考慮算反面,發現只要找從乙個點出發的兩種邊分別有幾條...