洛谷传送门:Burenka Plays with Fractions - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
难度:普及-
知识点:数论
思路:
a/b=c/d分数不直观,
我们去掉分数,交叉相乘变成ad==bc
如果 bc == ad,不用操作
如果 bc 和 ad 有倍数关系,只需要一次操作
否则需要两次
[参考:CF1720A Burenka Plays with Fractions 题解 -洛谷博客 (luogu.com.cn)]
AC代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
long long t,a,b,c,d,ans; scanf("%lld", &t);
while(t--){
scanf("%lld %lld %lld %lld", &a, &b, &c, &d);
if(a*d==b*c) ans = 0;
else if((b*c && (a*d)%(b*c)==0) || ( a*d && (b*c)%(a*d)==0)) ans = 1;
else ans = 2;
printf("%lld\n", ans);
}
return 0;
}
/*
知识点:数论
思路:
a/b=c/d分数不直观,
我们去掉分数,交叉相乘变成ad==bc
如果 bc == ad,不用操作
如果 bc 和 ad 有倍数关系,只需要一次操作
否则需要两次
心路历程:
1 2 2 3
lcm = 6
3 6 4 6
答案只有0,1,2
注意0的特判
搞了45分钟,还是没解决大数问题
题解看懂了,确实有更巧妙的方法
*/