tooh’s diary

半角全角、常体敬体が入り乱れるカオス

3/9 AtCoder

こんにちは。えっちな音声を聞いてたら今日はバカ早く起きました。とーです。

AtCoder

解くに至った問題(9問)

ABC:013C/035C/057D/084C/099C/121A,B,C,D


ABC099C

以前は苦労して解けなかったけどいま見たらパッと「DPやん」って思いつくようになったのは成長なんでしょうか。しかし2回バグらせてたのでダメですね。
以下はpython3による答え

N = int(input())
dp = [0]*100001     #ここに手数をいれます
L = [1,6,36,216,1296,7776,46656,9,81,729,6561,59049]
for i in range(100001):
    for j in range(len(L)):
        if 1 <= i+L[j] <= 100000:
            if dp[i+L[j]] == 0:     #リストの値が未更新なら
                dp[i+L[j]] = dp[i]+1     #参照したところから一手で飛べるとしておく
            else:     #リストの値が更新済みなら
                dp[i+L[j]] = min(dp[i]+1,dp[i+L[j]])       #更新済みの値と新たに参照したところから一手で飛んでくるののどちらがより手数が少ないかを判定
print(dp[N])

ABC121

全完しました
ヒィウィゴァ!ビ-ヒ-ロ-アイワナビ-ヒ-ロ-ホホンヒホヒホハハヘヘホw
       ∩
       \\
       /  )
⊂\_/ ̄ ̄ ̄  /
 \_/ ՞ةڼ◔(
   )    /⌒\
  /  ___/⌒\⊃
 (  /
  \\
   ∪
嬉しさのあまりBe a Hero!を踊るとー