原题链接VJ
题意:一支队伍进行了n场比赛,获得了p分。两个队伍比赛,赢一场得w分,输一场得0分,平局得到d分。问,这支队伍的一种输赢平比赛的情况。输入数据:n,p,w,d
思路:设其赢平输的次数分别为:x,y,z。则有:
xw+yd=p;
x+y<=n;
x+y+z=n;
所以,直接对y进行枚举就可以,枚举范围:(0~w)。因为如果y大于w,则完全可以由前面的x承担即可。
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define ll long long
int main()
{
ll flag=0,x,y,z,n,p,w,d;
scanf("%lld%lld%lld%lld",&n,&p,&w,&d);
for(ll i=0; i<w; i++)
if((p-i*d)%w==0)
{
x=(p-i*d)/w;
if(x>=0&&(x+i<=n))
{
printf("%lld %lld %lld\n",x,i,n-x-i);
flag=1;
break;
}
}
if(!flag)
printf("-1\n");
return 0;
}