#include<stdio.h> #include<algorithm> #include<math.h> #include<string.h> using namespace std; long long INF=0x3f3f3f3f3f3f3f; long long gcd(long long a,long long b) { if(b==0)return a; else return gcd(b,a%b); } long long exgcd(long long a, long long b, long long &x, long long &y) { if (!b) {x = 1; y = 0; return a;} long long d = exgcd(b, a % b, y, x); y -= a / b * x; return d; } int fangcheng(long long a,long long b,long long c,long long &x,long long &y) { long long d=exgcd(a,b,x,y); if(c%d) return 0; int k=c/d; x*=k; y*=k; long long t=b/d; if(t<0)t=-t; x=(x%t+t)%t; y=(c-(x*a))/b; return 1; } int main() { int t; long long a,b,c,d,n,aa,bb,cc; int kase=0; while(~scanf("%lld%lld%lld%lld",&aa,&bb,&cc,&n)) { kase++; printf("Case #%d: ",kase); a=min(aa,min(bb,cc)); c=max(aa,max(bb,cc)); b=aa+bb+cc-a-c; long long r=min(a,n/c); long long x,y; int flag=0; for(int i=0;i<=r;i++) { long long d=n-(long long)c*i; if(fangcheng(a,b,d,x,y)) { if(x>=0 && y>=0) { flag=1; break; } } } if(flag)printf("Yes\n"); else printf("No\n"); } return 0; }
|