斩杀线计算大师
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld
题目描述
算术能力是每个炉石玩家必不可少的,假设现在有三种伤害卡,伤害值分别是a,b,ca,b,c。并且每种伤害卡的数量你可以认为是无限的。现在牛牛想知道是否存在一种方式可以刚好造成kk点伤害,输出x,y,zx,y,z分别表示三种伤害卡的使用个数。
数据保证一定存在解。如果存在多组解,输出任意一组。
输入描述:
一行四个整数分别表示a,b,c,ka,b,c,k.
输出描述:
一行输出三个整数分别表示x,y,zx,y,z.
示例1
输入
3 4 5 20
输出
4 2 0
备注:
1≤a,b,c≤1e51≤a,b,c≤1e5
0≤k≤1e120≤k≤1e12
题意就是:ax+by+cz =k的整数解
int a,b,c;
ll k;
int main(){
cin>>a>>b>>c>>k;
int k1,k2;
int tmp;
for(int i=k/a;i>=0;i--){
tmp=k-i*a;
if(tmp==0){
cout<<i<<" "<<0<<" "<<0<<endl;
return 0;
}
else {
for(int j=tmp/b;j>=0;j--){
int k1=tmp-j*b;
if(k1==0){
cout<<i<<" "<<j<<" "<<0<<endl;
return 0;
}
else {
if(k1%c==0)
{
cout<<i<<" "<<j<<" "<<k1/c<<endl;
return 0;
}
}
}
}
}
}