水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

yukicoder 105に参加しました.

(今後コンテストURLに入っている数字を元に記事を書くことにしよう…)

ちなみに,得点がある人の中では最下位です.
理由としては20分しか時間取れなかった上に,参加したのがかなり遅かったからですね.

解いた問題だけ,ちょっとコメントを書いておきますか….

NO.211 素数サイコロと合成数サイコロ (1)

問題

No.211 素数サイコロと合成数サイコロ (1) - yukicoder

回答

#28206 No.211 素数サイコロと合成数サイコロ (1) - yukicoder

愚直に総当りで期待値求めてしまえばいいと思う.

so = [2,3,5,7,11,13]
go = [4,6,8,9,10,12]
table = [0 for _ in range(201)]
for s in so:
    for g in go:
        table[s*g] += 1
print(table[int(input())] / 36)
NO.212 素数サイコロと合成数サイコロ (2)

問題

No.212 素数サイコロと合成数サイコロ (2) - yukicoder

回答

#28377 No.212 素数サイコロと合成数サイコロ (2) - yukicoder

残念ながらコンテスト中に回答できませんでした.
オーダと制限時間考えてギリギリ総当りでも行けそうな雰囲気だったので,総当りでやってみようかなと思いましたが,ダメでしたね.
解説を読んで,期待値には計算法則があったことを思い出しました.
高校数学からやり直さないとな(お恥ずかしい)

解説ページ
http://yukicoder.me/problems/442/editorial

この期待値の法則を使えば,あっさりと解は出ます.

P, C = map(int, input().split())
exps = (sum([2,3,5,7,11,13]) / 6)** P
expg = (sum([4,6,8,9,10,12]) / 6) ** C
print(exps * expg)

改めて感じたのですが,数学的なところ忘れているところが多い気がします.
なるべく数学の本とか,アルゴリズムの本をもう少し読むようにしよう….


あと,参加時間が短くても二度と最下位はとらない!w