[NOIP 2009]HackSon的趣味題 數論

代碼

//gcd(x/a1,a0/a1)=1
//gcd(b1/b0,b1/x)=1
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;

int n,a0,a1,b0,b1;

int Gcd(int a,int b){
    if(b==0) return a;
    return Gcd(b,a%b);
}
int main(){
    cin>>n;
    while(n--){
        scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
        if(a0%a1||b1%b0){
            cout<<"0"<<endl;
        }
        int t1=a0/a1,t2=b1/b0,cnt=0;
        for(int i=1;i*i<=b1;i++){
            if(b1%i==0){
                int x=i;
                if(x%a1==0){
                    if(Gcd(x/a1,t1)==1&&Gcd(t2,b1/x)==1){
                        cnt++;
                    }
                }
                x=b1/i;
                if(x!=i && x%a1==0)
                    if(Gcd(t1,x/a1)==1&&Gcd(t2,b1/x)==1){
                        cnt++;
                    }
            }
        }
        cout<<cnt<<endl;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章