南洋oj 题目144小珂的苦恼

**

小珂的苦恼

**
时间限制:1000 ms | 内存限制:1000 KB
难度:2
描述
小珂是一名初中生,她现在很苦恼,因为老师布置了一个让她苦恼的作业,你能不能帮助她呢?题目信息如下。
已知二元一次方程 a*x+b*y=n, 判断这个二元一次方程有没有整数解,x,y为未知数,其中a,b,n都为整数且不等于零,同时满足0<a,b,n<2^16-1。
输入
第一行有一个整数0<n<=1000000表示有 n组测试数据,接下来的每一行有三个整数分别是a,b,n

输出
存在整数x和y使得方程有解,输出“Yes”,否则输出“No”

样例输入
2
2 4 2
3 9 7
样例输出
Yes
No
这是道数学题,数学题,数学题。
丢番图方程又名不定方程、整系数多项式方程,是变量仅容许是整数的多项式等式;即形式如右上角图的方程,其中所有的aj、bj和c均是整数,若其中能找到一组整数解m1,m2…mn者则称之有整数解。
一次不定方程是形式如a1x1 + a2x2 + … + anxn = c的方程,一次不定方程有整数解的充要条件为: (a1,…,an)须是c的因子,其中(a1,…,an)表示a1,…,an的最大公因子。
若有二元一次不定方程ax + by = c,且(a,b) | c,则其必有一组整数解x1,y1,并且还有以下关系式:
* x = x1 + [b / (a,b)]t
* y = y1 − [a / (a,b)]t
t为任意整数,故此一次不定方程有无限多解。

#include<stdio.h>
int main()
{
   int a,b,n,l;
   scanf("%d",&l);
   while(l--)
   {
       int d;
       scanf("%d %d %d",&a,&b,&n);
       while(b!=0)
        {
            d=a%b;
            a=b;
            b=d;
        }
        if(n%a==0)
            printf("Yes
");
        else
            printf("No
");
   }
   return 0;
}
原文地址:https://www.cnblogs.com/nanfenggu/p/7900169.html