【NOIP 2009】 Hankson的趣味题
【题目链接】
https://www.luogu.org/problemnew/show/P1072
【算法】
x是b1的约数
筛出b1的约数,判断是否符合条件即可
【代码】
#include<bits/stdc++.h> using namespace std; int i,a0,a1,b0,b1,cnt,ans,T; int factor[100010]; inline int gcd(int x,int y) { if (y == 0) return x; else return gcd(y,x%y); } inline int lcm(int x,int y) { return 1ll * x * y / gcd(x,y); } int main() { scanf("%d",&T); while (T--) { ans = 0; cnt = 0; scanf("%d%d%d%d",&a0,&a1,&b0,&b1); for (i = 1; i <= sqrt(b1); i++) { if (b1 % i == 0) { factor[++cnt] = i; if (i * i != b1) factor[++cnt] = b1 / i; } } for (i = 1; i <= cnt; i++) { if (gcd(a0,factor[i]) == a1 && lcm(b0,factor[i]) == b1) ans++; } printf("%d\n",ans); } return 0; }