有三种数量无限的砝码和一个天平,天平的一端有一个质量为 m 的物品,问能否通过放置砝码使得天平平衡?
输入
第一行包含一个整数 T (1 ≤ T ≤ 1e5),表示测试用例的组数。
每组测试用例的第一行包含四个整数 a,b,c,m (1 ≤ a,b,c,m ≤ 1e9),表示三种砝码和物品的质量。
输出
对于每组测试用例,如果能够使得天平平衡,输出 "YES",否则输出 "NO"。
Input
3
1 2 5 8
2 4 6 3
7 8 24 9
Output
YES
NO
YES
知识点
裴蜀定理:对于任意一对正整数a,b,一定存在非零整数x,y,使得ax+by=gcd(a,b)。
也就是说 如果 ax+by=m,则一定存在 m%gcd(a,b)=0。
解析:
裴蜀定理应用两次即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
typedef pair<int,int> PII;
const double PI=acos(-1.0);
const int N=2e6+10;
int t;
int a,b,c,m;
int gcd(int a,int b)
{return b? gcd(b,a%b) : a;
}
signed main()
{ios;cin>>t;while (t--){cin>>a>>b>>c>>m;int k=gcd(a,gcd(b,c));if (m%k==0) cout<<"YES\n";else cout<<"NO\n";}return 0;
}