前提・実現したいこと
初めてなのでどうかお手柔らかにお願いします。
pythonにて
『AtCoder Beginner Contest 099のC - Strange Bank』に挑戦していたのですが、テストケースの『04.txt』だけなんどやっても『WA』となります。
発生している問題・エラーメッセージ
特になし
該当のソースコード
python
1import math 2 3 4def chmin(G, i, new): 5 if new < G[i]: 6 G[i] = new 7 8 9N = int(input()) 10a = math.floor(math.log(N, 6)) 11b = math.floor(math.log(N, 9)) 12A = [6 ** c for c in range(1, a+1)] 13B = [9 ** d for d in range(1, b+1)] 14C = [1] + A + B 15dp = [N] * 200000 16dp[0] = 0 17for x in range(N): 18 for y in C: 19 chmin(dp, x + y, dp[x] + 1) 20print(dp[N])
試したこと
どうやら「9^5の49059」だけがエラーになっている様です。
6^5の7776や
9^4の6561、
9^6の531441
は問題ないみたいなのですが、9^5だけがダメです。
そこで順番に出力してみたのですが、
import math A = [9 ** a for a in range(10)] b = [math.floor(math.log(i, 9)) for i in A] print(b) # [0, 1, 2, 3, 4, 4, 6, 7, 8, 9]
となり、
A = [9 ** a for a in range(10)] b = [(math.log(i, 9)) for i in A] print(b) # [0.0, 1.0, 2.0, 3.0, 4.0, 4.999999999999999, 6.0, 7.0, 8.0, 9.0]
となってしまいます。なぜ5だけ??と困っています。
もしかすると2進数とかの兼ね合いで起きてしまうのかなぁとも思うのですが。
そこで解決策というか、「こういう時には対数を使ってはいけない」とか作法があるなら教えていただきたいところです。どうぞよろしくお願いします。
(あと質問の仕方が間違っていたら、それも教えてほしいです。)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/30 10:03