スポンサーリンク

【Python】AtCoder Beginner Contest 003 A,C問題 解答

スポンサーリンク
スポンサーリンク
この記事は約1分で読めます。

Atcoderが主催するABC003の問題を解答します。

A問題

解答

10000*(1/6)+20000*(1/6)+30000*(1/6)+40000・・・=35000円

 

C問題

方針

問題文より、小さい順から足して2で割ることを繰り返していくことで答えを求められそうです。

nは動画の数、kは視聴できる数を表しています。

k=1の場合はレーティングが最大の値を2で割ればよいです。

それ以外の場合は、レーティングを昇順に並び替え、大きい方からk個の値を取り出し、小さい順に足して2で割ることを繰り返していきます。

 

解答

解答1

 

解答2

他の方の回答ですが、こちらの方がわかりやすくて無駄がないですね。

わざわざ最大値からk個分取り出して別のリストに保存しなくとも、元のレーティングのリストをそのまま使うことができます。

コメント