CF1244C The Football Season
https://www.luogu.com.cn/problem/CF1244C
先把下面那个条件转换一下变成
x
+
y
≤
n
x+y\le n
x+y≤n
注意到
d
<
w
d<w
d<w,所以y越小越好
移一下项
p
−
y
d
=
x
w
p-yd=xw
p−yd=xw
然后如果
y
>
=
w
y>=w
y>=w那么必然无解(根据扩展欧几里得(exgcd),可以得到y必然<w)
直接枚举即可
code:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll n, p, w, d;
int main() {
scanf("%lld%lld%lld%lld", &n, &p, &w, &d);
ll y = 0;
while(y < w && (p - d * y) % w != 0) y ++;
if(y == w) {
printf("-1"); return 0;
}
ll x = (p - d * y) / w;
if(x < 0 || x + y > n) {
printf("-1"); return 0;
}
printf("%lld %lld %lld", x, y, n - x - y);
return 0;
}