Hankson 的趣味题
这题要有思维!对。数论!最大公约数与最小公倍数。
用LaTex写公式,真的麻烦!wcnmd!,,,,,,be----
于是我用手写了:
大功告成!上马!
#include<cstdio>
using namespace std;
int gcd(int a,int b){//没有用三目运算符,算仁慈了吧
if(b==0){
return a;
}else{
return gcd(b,a%b);
}
}
int main() {
int t;
scanf("%d",&t);//t组数据
while(t--) {
int a0,a1,b0,b1;
scanf("%d%d%d%d",&a0,&a1,&b0,&b1);
int p=a0/a1,q=b1/b0,c=0;
for(int x=1;x*x<=b1;x++){
if(b1%x==0){//找因子
if(x%a1==0&&gcd(x/a1,p)==1&&gcd(q,b1/x)==1){
c++;//符合条件加次数
}
int y=b1/x;//得到另一个因子
if(x==y) {//因子都和y一样了怎么不可以跳过本次循环呢?
continue;
}
if(y%a1==0&&gcd(y/a1,p)==1&&gcd(q,b1/y)==1){
c++;
}
}
}
printf("%d\n",c);
}
return 0;
}
这次推公式,推了很久,过程详细。看懂了的在评论区说:我是神!!!!!!!!!