[白俊]#2839
#2839
ビューを展開
PROBLEM
尚根は最近砂糖工場で砂糖を送った.尚根は今、キャンディ屋に正確にNキロの砂糖を送る.砂糖工場で生産された砂糖は袋に入っている.袋は3キロ袋と5キロ袋があります.
尚根は面倒なので、できるだけ少ない袋を持っていきたいと思っています.例えば、18キロの砂糖を配達する必要がある場合は、3キロの袋を6つ持ってもいいですが、5キロと3キロを3つ配達すれば、より少ない数の袋を配達することができます.
尚根がNキロの砂糖を正確に配達する必要がある場合は、いくつかの袋を持っていくことができるかどうかを確認するプログラムを作成してください.
INPUT:1行目にNがあります.(3 ≤ N ≤ 5000)
OUTPUT:上本送達袋の最小数を出力します.もし、N kgを正確に作れなかったら、-1を出力します.
EXAMPLE 1
input
18
output4
EXAMPLE 2input
4
output-1
EXAMPLE 3input
6
output2
EXAMPLE 4input
9
output3
EXAMPLE 5input
11
output3
RESULT結果メモリ時間言語コード長
import sys
input = int(sys.stdin.readline())
max_size = input // 5
answer = 0
if (max_size == 0 and input % 3 != 0) or input == 0:
print(-1)
else:
for i in range(max_size, -1, -1):
left = input - (5 * i)
if left % 3 == 0:
answer = i + left//3
break
answer = i
print(answer)
Reference
この問題について([白俊]#2839), 我々は、より多くの情報をここで見つけました https://velog.io/@hongsbus/백준-2839テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol