ことさら−古都プログラマーの更級日記

京都でお寺を回りながら御朱印集めをしていたエンジニアのブログ。おもに技術的なはなしとか日常的なはなし。たまにカメラの話や競馬の話も書きます。

yukicoder no.221/222/223 に参加しました。

あやややや!射命丸文です。機能の yukicoder に参加しました。yukicoder はゆるふわだと聞いたので、始めて参加するコンテストにはいいかなぁと思ってたんですが、以外と難しかったです。結果はこちら

f:id:yoshiki_utakata:20150606130805p:plain

一応2問は解くことができました。しかもWrond Answerはゼロ!初めてにしてはいい感じな気がします。これから自分の解き方について説明していきます。最高最速の名にふさわしく、今回はC++を使って解きました!

no.221 犯罪都市

確率の問題、はじめて解いたので混乱してしまいました。

幻想郷には10000人あたりにN人の犯罪者がいるとします。ひいぃ〜怖いっ!そこでにとりさんが、犯罪者判定器を作りました!なんとこの判定器は、犯罪者 or 犯罪者でない を99%で当てられるマシンのようです。すごいっ!このマシンの結果を元に犯罪者を逮捕していった結果、誤認逮捕率を求めよという問題です!

方針

誤認逮捕率というのは、

 \frac{犯罪者でないのに逮捕された人数}{全逮捕人数}

で求められます。もっと言うと、

 \frac{犯罪者でないのに逮捕された人数}{犯罪者で逮捕された人数 + 犯罪者でないのに逮捕された人数}

となります。

`` 犯罪者で逮捕された人数 = N * 0.99 犯罪者でないのに逮捕された人数 = (10000 - N) * 0.01

となるので、これらを使えば求められます。ちょっと時間がかかってしまいました…


# no.222 引き算と足し算

演算子の+, - は逆になるんですが、符号としての+, -は逆にならないみたいですね… これは厄介です。

見つかった +, - にたいして、その前にあるのが数字ならこれは演算子であると判断しました。それで予めそのような +, - は逆の記号に置き換えてしまって、あとは頑張って計算する機構を実装したら通りました!