Codeforces Round #592 (Div. 2)【C题】{补题ING}


 思路:x,y,z肯定不为负数xw+dy=p,直接枚举系数较小的y即可,y的范围:y

 1 /*
 2  
 3 x*w+y*d=p;
 4 x*w+(Kw+y)*d
 5 (x+d)*w+d;
 6 
 7 x+y+z=n;
 8  
 9 */
10 #include
11  
12 using namespace std;
13 #define int long long
14 signed main(){
15     int n,p,w,d;cin>>n>>p>>w>>d;
16     for(int y=0;y<=w;y++){
17         int temp=p-y*d;
18         if(temp%w)
19             continue;
20         int x=temp/w;
21         if(x+y<=n&&x>=0&&y>=0&&(n-x-y)>=0){
22             cout<" "<" "<y;
23             return 0; 
24         }
25     }
26     cout<<"-1";
27     return 0;
28 }