每天一题萌萌哒
2x + 3y = 10 15x + 35y = 67 x + y = 0
Yes. No. Yes. HINT: The first equation is true for x = 2, y = 2. So, we get, 2*2 + 3*2=10. Therefore, the output should be “Yes.”
#include <stdio.h>
#include <string.h>
char str[100];
long long gcd(long long x,long long y)
{
return y==0?x:gcd(y,x%y);
}
long long gcd(long x,long y)
{
return y==0?x:gcd(y,x%y);
}
long long Ex_Euclid(long long a,long long b,long long &x,long long &y)
{
long long ans,t;
if (b==0)
{
x=1;
y=0;
ans=0;
return ans;
}
ans=Ex_Euclid(b,a%b,x,y);
t=x;
x=y;
y=t-(a/b)*y;
return ans;
}
int main()
{
int i,j,n;
long long A,B,C,D,x,y,k,t;
while(scanf("%s",str)!=EOF)
{
A=0;
for (i=0;i<strlen(str)-1;i++)
{
A=A*10+str[i]-'0';
}
scanf("%s",str);
scanf("%s",str);
B=0;
for (i=0;i<strlen(str)-1;i++)
{
B=B*10+str[i]-'0';
}
scanf("%s",str);
scanf("%s",str);
C=0;
for (i=0;i<strlen(str);i++)
{
C=C*10+str[i]-'0';
}
if (A==0) A=1;
if (B==0) B=1;
D=gcd(A,B);
if (C%D!=0)
{
printf("No.\n\n");
continue;
}
n=Ex_Euclid(A,B,x,y);
x=x*C/D;
t=B/D;
x=(x%t+t)%t;
k=(C-A*x)/B;
if (k>=0)
{
printf("Yes.\n\n");
continue;
}
y=y*C/D;
t=A/D;
y=(y%t+t)%t;
k=(C-B*y)/A;
if (k>=0)
{
printf("Yes.\n\n");
continue;
}
printf("No.\n\n");
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<cstdlib>
char arr[30],temp[10];
int a,b,c;
int main()
{
int i,j,len,x,y,cnt;
while(scanf("%s",temp)!=EOF)
{
getchar();getchar();getchar();
a=atoi(temp);
if(a==0)
a=1;
scanf("%s",temp);
getchar();getchar();getchar();
b=atoi(temp);
if(b==0)
b=1;
scanf("%d",&c);
getchar();
if(c>=0)
{
if(b==0&&c%a==0||a==0&&c%b==0)
{
printf("Yes.\n\n");
break;
}
for(x=0;(cnt=c-a*x)>=0;x++)
{
if(cnt%b==0)
{
printf("Yes.\n\n");
break;
}
}
if(cnt<0)
printf("No.\n\n");
}
else
printf("No.\n\n");
}
return 0;
}The Diophantine Equation hdu 3270,布布扣,bubuko.com
The Diophantine Equation hdu 3270
原文:http://blog.csdn.net/chaoyueziji123/article/details/38493319