HDU 1695 GCD 歐拉函數+容斥原理+質因數分解
題意:在[a,b]中的x,在[c,d]中的y,求x與y的最大公約數為k的組合有多少。(a=1, a <= b <= 100000, c=1, c <= d <= 100000, 0 <= k <= 100000)
思路:因為x與y的最大公約數為k,所以xx=x/k與yy=y/k一定互質。要從a/k和b/k之中選擇互質的數,枚舉1~b/k,當選擇的yy小於等於a/k時,可以選擇的xx數為Euler(yy),當yy大於a/k時,就要用容斥原理來找到yy的質因數,在a/k范圍內找到與yy互質的數。
代碼:
#include
#include
#include
#include
#include