【题目描述】
蓝宝作为班长,现在要为同学们采购文具。文具单价为:笔记本7元;笔4元;橡皮3元。
蓝宝手里有n元班费,假如笔记本、笔、橡皮的订购数量分别为a,b,c。他采购的原则依次如下:
- n元班费必须正好用完,即7a+4b+3c=n.
- 在满足以上条件情况下,成套的数量尽可能大,即a,b,c中的最小值尽可能大。
- 在满足以上条件的情况下,物品的总数尽可能大,即a+b+c尽可能大。
请帮助蓝宝找到满足条件的最优方案。(说明:若存在方案,则最优方案唯一。)
【输入格式】输入一行,为一个整数,代表班费数量n。
【输出格式】输出一行。如果问题无解,请输出-1。否则输出a,b,c用空格隔开。
【输入样例1】34
【输出样例1】2 2 4
【输入样例2】18
【输出样例2】1 2 1
【输入样例3】2
【输出样例3】-1
n=int(input())
lst1=[]
lst2=[]
lst3=[]
y=0
#满足条件一
for a in range(1,n+1):
for b in range(1,n+1):
for c in range(1,n+1):
if c==(n-7*a-4*b)/3:
lst1.append(a)
lst2.append(b)
lst3.append(c)
#满足条件二
lst4=[]
for i in range(len(lst1)):
lst=[lst1[i],lst2[i],lst3[i]]
x=min(lst)
if x>y:
y=x
lst4=lst
#输出
if lst4 != []:
for i in lst4:
print(i,end=' ')
else:
print(-1)
代码能够输出样例,但感觉还不够完善,对于是否满足条件三不知道怎么判断