「NYOJ144」小珂的苦恼 - exgcd
小珂的苦恼
时间限制:1000 ms
内存限制:1000 KB
难度:2
第一行有一个整数0<n<=1000000表示有 n组测试数据,接下来的每一行有三个整数分别是a,b,n
输出
存在整数x和y使得方程有解,输出“Yes”,否则输出“No”
样例输入
2
2 4 2
3 9 7
样例输出
Yes
No
分析
用扩展欧几里得定理判断是否有解即可,还需要稍微卡一下常(读入优化)
代码
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#define N putchar('N'),putchar('o'),putchar('\n')
#define Y putchar('Y'),putchar('e'),putchar('s'),putchar('\n')
using namespace std;
inline int read(){
int f=0,x=0;
char ch=getchar();
while(!isdigit(ch)) f|=(ch=='-'),ch=getchar();
while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return f?-x:x;
}
inline int gcd(int x,int y){
return !y?x:gcd(y,x%y);
}
int main(){
int n,a,b,c,r;
read(n);
while (n--){
a=read();
b=read();
c=read();
r=gcd(a,b);
if(c%r) N;
else Y;
}
return 0;
}