P1072 [NOIP2009 提高组] Hankson 的趣味题

//ans=0 first -> 0  second use define
//gcd(m,n) dont using /
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<bits/stdc++.h>
#define ll long long
#define ddd printf("-----------------debug\n");
using namespace std;

int gcd(int a,int b){
    return b==0 ? a:gcd(b,a%b);
}

int main()
{
    ios::sync_with_stdio(false);
    
    int T;
    cin>>T;
    while(T--)
    {
        int a0,a1,b0,b1,ans=0;
        cin>>a0>>a1>>b0>>b1;
        for(int i=1;i*i<=b1;i++)
        {
            int p=a0/a1,q=b1/b0;
            if(b1%i==0)
            {
                if(i%a1==0&&gcd(q,b1/i)==1&&gcd(i/a1,p)==1) ans++;
                int y=b1/i;
                if(i==y) continue;//
                if(y%a1==0&&gcd(q,b1/y)==1&&gcd(y/a1,p)==1) ans++;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}
View Code
 

 

 
posted @ 2023-07-08 10:11  JMXZ  阅读(6)  评论(0)    收藏  举报