题目
代码
# 方法1
x = int(input())
pen_4 = int(x/4)
surplus = x%4
if(surplus == 3):
print('{:d} {:d} {:d}'.format(1, 1, pen_4-2))
elif(surplus == 2):
print('{:d} {:d} {:d}'.format(1, 0, pen_4-1))
elif(surplus == 1):
print('{:d} {:d} {:d}'.format(0, 1, pen_4-1))
else:
print('{:d} {:d} {:d}'.format(0, 0, pen_4))
# 方法2
x = int(input())
pen_4 = int(x/4)
pen_5 = pen_6 =0
surplus = x%4
while surplus>0:
pen_4 -= 1
surplus += 4
if surplus%5==0:
pen_5 += 1
surplus -= 5
elif surplus%6==0:
pen_6 += 1
surplus -= 6
print('{:d} {:d} {:d}'.format(pen_6, pen_5, pen_4))
算法思想
若想让笔的数量最大,应优先购买4元的。
以4为基准求余:
-
剩1元,则4元钱的笔少买1支,换成1支5元笔;
-
剩2元,则4元钱的笔少买1支,换成1支6元笔;
-
剩3元,则4元钱的笔少买2支,换成1支5元笔和1支6元笔;
本题的主要思想是 贪心算法 ,方法1属于暴力解法,方法2有待优化(循环中的三块代码操作类似,可以通过函数来处理)