有增长姿势了
如果a * b == lcm * gcd
那么a和b为lcm因数 这个我之前真不知道emm。。。
#include <bits/stdc++.h> #define mem(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long LL; const int maxn = 1e6+5, INF = 0x7fffffff; LL gcd(LL a, LL b) { return b==0?a:gcd(b, a%b); } int main() { LL l, r, x, y; cin>> l >> r >> x >> y; LL ans = x * y; LL cnt = 0; for(LL i=1; i<=sqrt(y+0.5); i++) { if(y % i) continue; LL tmp = y / i; LL t = ans / i; if(i >= l && i <= r && t >= l && t <= r && gcd(i, t) == x) cnt++; if(i != tmp) { t = ans / tmp; if(tmp >= l && tmp <= r && t >= l && t <= r && gcd(tmp, t) == x) cnt++; } } cout<< cnt <<endl; return 0; }