您的位置:首页 > 其它

[NOIP 2009]HackSon的趣味题 数论

2015-11-03 21:12 429 查看

代码

//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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: