P1072 得分20,请各位大佬帮忙看看!!!
  • 板块学术版
  • 楼主windy0321
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/29 22:48
  • 上次更新2024/4/30 15:01:32
查看原帖
P1072 得分20,请各位大佬帮忙看看!!!
1298142
windy0321楼主2024/4/29 22:48
#include <bits/stdc++.h>
using namespace std;
int t;
int a0,a1,b0,b1;
int ans;
int gcd(int a,int b) {
    return b==0 ? a:gcd(b,a%b);
}
int func(int x) {
    if(x==1 && a1!=1) {
        return a1-1;
    }
    return a1;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>t;
    while(t--) {
        ans=0;
        cin>>a0>>a1>>b0>>b1;
        if(a0%a1!=0 || b1%b0!=0 || b1%a1!=0) {
            cout<<0<<endl;
            continue;
        }
        int ls=sqrt(b1);
        for(int x=1;x<=ls;x+=func(x)) {
            if(b1%x!=0) {
                continue;
            }
            if(x/a1>=1 && gcd(x/a1,a0/a1)==1 && gcd(b1/b0,b1/x)==1) {
                ans++;
            }
            int y=b1/x;
            if(x==y || y%a1!=0) {
                continue;
            }
            if(y/a1>=1 && gcd(y/a1,a0/a1)==1 && gcd(b1/b0,b1/y)==1) {
                ans++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
/*
 *gcd(x,a0)=a1
 *gcd(i*a1,a0)=a1;
 *gcd(i*a1,a3*a1)=a1;
 *gcd(i,a3)=1;
 *x*b0/gcd(x,b0)=b1
 *i*a1*b0/gcd(x,b0)=b1;
 *
 *
 *gcd(x,b0)=x*b0/b1;
 *
 *
 *
 *b1/b0=b3;
 *gcd(i,a3)=1;
 */
2024/4/29 22:48
加载中...