CF1720A Burenka Plays with Fractions 题解

· · 题解

题目的目标是让两个分数满足以下条件:

\frac{a}{b}=\frac{c}{d}

把上面的式子变形一下,得:

ad=bc

所以,如果开始时给定的 a,b,c,d 都满足 ad=bc,那么说明不需要操作;

那如果不满足呢?

为方便处理,不妨设 ad<bc。很显然,如果 bcad 的倍数,可以通过将 ad 乘以 \frac{bc}{ad},一次操作即可满足。否则铁定无法一次完成,需要两次。

放代码:

#include<bits/stdc++.h>
#define int long long // 记得开 long long,不然你会连样例都过不去
using namespace std;
main(){
  ios::sync_with_stdio(false);
  int t; cin>>t;
  while(t--){
    int a,b,c,d; cin>>a>>b>>c>>d,a*=d,b*=c;
    if(a==b)cout<<"0\n";
    else if(b&&a%b==0||a&&b%a==0)cout<<"1\n"; // 如果一个是另一个的倍数
    // 注意,要特判除数是 0!!!
    else cout<<"2\n";
  }
  return 0;
}