名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。アクセス解析のためGAを利用、Googleに情報を送信しています。商品紹介のためAmazonアフィリエイトを利用、Amazonに情報を送信しています。記事に関しては私が書いていない引用文を除いて自由にご利用ください。

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