题目描述
双十一期间,科丁商场的商品都做起了打折活动变得很便宜,乐乐决定去采购一番。已知乐乐身上有n元钱,乐乐想买的东西分别是牛奶,薯片,面包,打折后的牛奶a元一瓶,薯片b元一包,面包c元一个,现在乐乐想把身上的钱全部花完且三种物品都要购买至少一件一共有哪些购买方案?请按照牛奶数量从小到大输出每一种情况,如果牛奶数量相等按照薯片数量从小到大输出,如果薯片数量相等按照面包数量从小到大输出。如果没有方案则输出:no。
输入格式
输入一行:用空格分隔的四个整数n,a,b,c,第一个整数n表示钱数,第二个整数a表示牛奶的价格,第三个整数b表示薯片的价格,第四个整数c表示面包的价格。
输出格式
若有购买方案,请按照牛奶数量从小到大输出每一种情况,如果牛奶数量相等按照薯片数量从小到大输出,如果薯片数量相等按照面包数量从小到大输出。如果没有方案则输出:no。
每一种方案:每行三个整数,分别为牛奶瓶数、薯片包数和面包个数,数字间用空格隔开,若没有购买方案则输出:no。
20 2 3 5
1 1 3 2 2 2 3 3 1 6 1 1
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b,c,n,f=1;
scanf("%d %d %d %d",&n,&a,&b,&c);
for(int i=0;i<=n;i++){
for(int j=0;j<=n-i;j++){
for(int k=0;k<=n-i-j;k++){
if(i!=0&&j!=0&&k!=0){
if(i*a+j*b+k*c==n){
printf("%d %d %d\n",i,j,k);
f=0;
}
}
}
}
}
if(f){
cout<<"no";
}
return 0;
}
超时了,求解!!!