版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sugar_free_mint/article/details/82025889
题目
给定四个正整数 ,求有多少个数满足
分析
从 得到 ,所以暴力+剪枝就AC了
代码
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a0,a1,b0,b1,x,ans;
int gcd(int a,int b){
if (b==0) return a;
else return gcd(b,a%b);
}
int main(){
scanf("%d",&n);
while (n--){
ans=0;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
if (a0%a1||b1%b0) {printf("0\n"); n--; continue;} //不可能
for (int i=1;i*i<=b1;++i)
if (b1%i==0){//可以被整除
x=i;
if (x%a1==0)
if (gcd(a0/a1,x/a1)==1&&gcd(b1/b0,b1/x)==1) ans++;//除掉最大公因数公因数应为1
x=b1/i; //那么i*x=b1
if (x!=i&&x%a1==0)//避免完全平方数
if (gcd(a0/a1,x/a1)==1&&gcd(b1/b0,b1/x)==1) ans++;
}
printf("%d\n",ans);
}
return 0;
}