😺

【AtCoder解説】ABC085C - Otoshidama を解いた記録

に公開

本記事は、AtCoder の問題を解いて得た知見を記録するための学習ログです。
毎回1問ずつ、「何を考えて解いたか」「どう実装したか」「学んだこと」を簡単にまとめていきます。

問題概要

10000円5000円1000円の合計枚数かつ合計金額が与えられた数の組み合わせを数える問題

解放とコード

n, y = map(int, input().split())

def a(n, x):
  for i in range(n + 1):
    for j in range(n - i + 1):
      k = n - i - j
      if i*10000 +j*5000 +k*1000 == x:
        return f"{i} {j} {k}"
  return '-1 -1 -1'
 
print(a(n, y))    

set()

解きながら考えたこと・学んだこと・感じたこと

  • 最初は3重ループを使ったが、処理時間が長すぎてエラーが起きた
  • ループの合計が決まっていればループを減らせる

AIの評価

  • OK

綺麗な回答

n, y = map(int, input().split())

def a(n, x):
  for i in range(n + 1):
    for j in range(n - i + 1):
      k = n - i - j
      if i*10000 +j*5000 +k*1000 == x:
        return f"{i} {j} {k}"
  return '-1 -1 -1'
 
print(a(n, y))

Discussion