HDU 1695 GCD★(反発原理+オラ関数)
2785 ワード
テーマリンク:
http://acm.hdu.edu.cn/showproblem.php?pid=1695
タイトル:[1.b]のxと[1.d]のyはどれぐらいgcd(x,y)=kがありますか?
構想:予備知識:
反発原理は、数区間[1.r]のnとの間の相互の数の個数を求めます.
ヘレ はgcd(x,y)=kを要求すると、gcd(x/k,y/k)=1を求める問題になります.だから、問題は[1.b/k]と[1.d/k]の中にどれぐらいのペアがあるかを求めます.また、この問題はgcd(1,3)とgcd(3)を求めます.容斥原理で解決します.[x.d/k]=[1.d/k]-[1.x-1],[1.d/k]上の容斥原理で解決できます.[1.x-1]も収容できますが、速度が遅く、明らかにより速いリラ関数で行うことができます.
http://acm.hdu.edu.cn/showproblem.php?pid=1695
タイトル:[1.b]のxと[1.d]のyはどれぐらいgcd(x,y)=kがありますか?
構想:予備知識:
反発原理は、数区間[1.r]のnとの間の相互の数の個数を求めます.
ヘレ はgcd(x,y)=kを要求すると、gcd(x/k,y/k)=1を求める問題になります.だから、問題は[1.b/k]と[1.d/k]の中にどれぐらいのペアがあるかを求めます.また、この問題はgcd(1,3)とgcd(3)を求めます.容斥原理で解決します.[x.d/k]=[1.d/k]-[1.x-1],[1.d/k]上の容斥原理で解決できます.[1.x-1]も収容できますが、速度が遅く、明らかにより速いリラ関数で行うことができます.
#include
#include
#include
#include
#include
#include
#include
#include
#include