C問題をC++とPythonで解いてみました。ABC308は、2023年7月1日21:00に実施されました。紹介はこちらに、プログラミングの方針はこちらに記事があります。605)問題はリンク先をご覧ください。Standings仮数部が大きい浮動小数点数を使うかソートで工夫する問題です。ソートすれば解決します。仮数部は53ビットです。この精度では、足りないように問題の制約が設定されています。それより仮数部が大きい浮動小数点数を使います。解法2有理数としてソートします。ソート関数の比較関数を設定します。仮数部(53ビット)の精度が足りません。仮数部は64ビットです。使えば精度が足ります。浮動小数点数の精度については、このユーザ解説で詳しく説明されています。コンテナに格納しています(19行目)。以下が、C++プログラムとなります。比較関数を作って有理数をソートする。有理数として比較すれば、浮動小数点数のような評価が難しい精度の問題は発生しません。関数の第3引数に、比較する関数を指定することができます。して型定義しておきます(5行目)。引数として要素を2つ取ります(7ー21行目)。有理数として等しければ、添え字の大きさを比較する(17行目)。有理数として異なれば、その大きさを比較する(19行目)。補足:有理数は降順で、添え字は昇順となるように評価式を設定しています。指定します(36行目)。AC(Accepted=正しいプログラム)と判定されました。内部表現を把握できていないため、比較関数を使って有理数をソートします。比較関数を指定できます(2、23行目)。ソートするリストの要素はタプルにしました。Python(3.8.2)では、実行時間が1900msecより大きくなりました。この問題の時間実行制限は2000msecなので、時間的に余裕がありませんでした(PyPy3(7.3.0)の実行時間は1600msec前後でした)。d])こちらも「AC」と判定されました。比較関数を自分で実装する必要があるため、難易度が上がった気がします。この記事を書くことで、ソートの比較関数について学ぶことができました。問題を紹介していきます。コメントをキャンセルメールアドレスが公開されることはありません。付いている欄は必須項目です上に表示された文字を入力してください。Contest)記事一覧ソフトウェア技術者アナダパンチ組込み製品の開発に従事しているソフトウェア技術者です。仕事でソフトウェア開発に従事しながら、趣味でもプログラミングを楽しんでいます。