ml_begin’s blog

Python初心者が、機械学習、画像認識、Web解析について取り組んでいきます。

AtCoder(競プロ)〜1日1問【14日目】

f:id:ml_begin:20180604073123j:plain

ついに二週間目。早いな。
abc095.contest.atcoder.jp

所持金:X円
最低限作りたいドーナツの種類:N
ドーナツの素の値段:m_1+m_2+ ....m_N \leq X
でN種類のドーナツを作り、残った値段でできるだけ多くのドーナツを作ると
最大何個作る事ができるか

N,X = map(int, input().split())
ms = [int(input()) for i in range(N)]
print(N + int((X - sum(ms))/min(ms)))

 X-sum(ms)
で残りの値段が算出でき、
 /min(ms)
でドーナツの中で最も安いものをいくつ作る事ができるのを算出できます。

短いかつ可読性○のコード

N,X=map(int,input().split())
s=[int(input()) for i in range(N)]
print(((X-sum(s))//min(s))+N)

私が書いたコードと似ている。さすがPython
最後の行の

//

これは切り捨て徐算といって、

3//2 → 1
5//3 → 1
7//2 → 3

といった具合です。次からこれを使います。