質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

349閲覧

AtCoder AGC044 A問題 9testfile中2WAとなってしまう原因が分かりません

shake9

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/05/31 11:26

前提・実現したいこと

AtCoder AGC044 A問題に関する質問です。
下記のプログラムを作成しましたが、WAとなってしまいました。
どこが原因となっているかをお聞きしたいです。
9testfile中2WAとなっているようで、問題文中のtestfileに関しては正常に作動しました。

発生している問題・エラーメッセージ

テストケース005.txtと007.txtでエラー

#コンテストですのでエラーメッセージは確認出来ませんでした ソースコード import sys from functools import lru_cache sys.setrecursionlimit(1000000) t = int(input()) l = [list(map(int, input().split())) for i in range(t)] for i in range(t): N = l[i][0] A = l[i][1] B = l[i][2] C = l[i][3] D = l[i][4] @lru_cache(maxsize=10**18) #再帰で呼び出すのでメモ化 def min_coin(n): #再帰を使って到達する数を減らしていく if(n == 0): return 0 elif(n == 1): return D #特殊な0,1を先に省く else: if(n%2 == 0): a = min_coin(n/2) else: a = min(min_coin(n//2)+D,min_coin(n//2+1)+D) #上下両方の偶数からの個数を比較する if(n%3 == 0): b = min_coin(n/3) elif(n%3 == 1): b = min(min_coin(n//3)+D,min_coin(n//3+1)+D*2) else: b = min(min_coin(n//3)+D*2,min_coin(n//3+1)+D) if(n%5 == 0): c = min_coin(n/5) else: re = n%5 c = min(min_coin(n//5)+D*re,min_coin(n//5+1)+D*(5-re)) return min(a+A,b+B,c+C,D*n) print(int(min_coin(N))) ```python ### 試したこと 問題文中のテストファイルを試しましたがそちらでは想定解となりました #####入力 5 11 1 2 4 8 11 1 2 2 8 32 10 8 5 4 29384293847243 454353412 332423423 934923490 1 900000000000000000 332423423 454353412 934923490 987654321 #####出力 20 19 26 3821859835 23441258666 AtCoderにて提出しましたが、WAとなりました。 実行時間には特に問題がありませんでした。 ただ、関係があるかは分かりませんが、400ms以下で終了したものは全てACであるのに対して、WAとなったファイルでは467ms,597msとなりました、 再帰回数の上限を10000→100000→1000000と変えましたが、変化はありませんでした。 ### 補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一部割り算が浮動小数点での割り算になってます
Nが大きく、浮動小数点に変換すると誤差が出るレベルのなのでそれが原因かもしれません

投稿2020/05/31 13:48

yudedako67

総合スコア2047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shake9

2020/05/31 13:58

素早いご回答ありがとうございます、無事ACとなり解決できました。 不慣れなもので割り算の違いを気にしておりませんでした。 非常に勉強になりました、ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問