标签:row main splay long pre print 枚举 ORC problem
先考虑求解
\[
x\times w + y\times d=p
\]
若存在一组解
\[
\begin{cases}
x_0\y_0 = kw + v & (0<v<w)\\end{cases}
\]
则
\[
x_0 \times w + y_0 \times d = p\\Rightarrow x_0 \times w + (kw+v)\times d = p\\Rightarrow x_0\times w + k\times w\times d + v\times d = p\\Rightarrow (x_0+k\times d)\times w + v\times d = p ~~~~~
\]
所以一定存在一组解
\[
\begin{cases}
x = x_0 + k\times d\y = v
\end{cases}
\]
并且由于\(w> d\)
有
\[
x + y = x_0 + k\times d + v < x_0 + k\times w + v
\]
前者比后者更有可能成为答案
所以直接枚举所有的v即可
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,p,w,d;
int main(){
cin >> n >> p >> w >> d;
for(ll v=0;v<w;v++){
if((p - v * d) % w == 0){
ll x = (p - v * d) / w;
if(x >= 0 && x + v <= n){
printf("%lld %lld %lld\n",x,v,n-x-v);
return 0;
}
}
}
puts("-1");
return 0;
}
CF 1244 C - The Football Season
标签:row main splay long pre print 枚举 ORC problem
原文地址:https://www.cnblogs.com/1625--H/p/11669036.html