Akihito Ikeda

M-SOLUTIONS プロコンオープン

posts/2019-06-03diary

出場はできなかったが後から問題を解いた。と言ってもA, Bの2問だけ(*/∇\*)
Cは一応チャレンジはしてみたが…。

A - Sum of Interior Angles

問題

3以上の整数 Nが与えられます。正N角形の内角の和を求めてください。
ただし、度数法を用いて、単位は出力しないでください。
$$3≤N≤100$$

考察

正$$N$$角形の内角の和は$$180 * (N - 2)$$で求まる。
ひとつの頂点から対角線を引くと、内部に$$N-2$$個の三角形ができるため。

提出コード

n = gets.strip.to_i

puts 180 * (n - 2)

B - Sumo

問題

高橋君は相撲の大会に参加しています。大会は15日間行われ、高橋君は1日1番の取組を行います。
また、高橋君は8番以上勝つと次の大会にも参加できます。
k日目までの取組が終了しました。高橋君の取組の結果が’o’, ‘x’からなる長さkの文字列Sで与えられます。
Sのi文字目が’o’ならば高橋君がi日目の取組で勝ったことを、‘x’ならば負けたことをそれぞれ表します。
高橋君が次の大会にも参加できる可能性があるならば’YES’を、 そのような可能性がないならば’NO’を出力してください。
1≤k≤15
Sは’o’, ‘x;からなる長さkの文字列である

考察

その時点で8敗以上していればダメ。
それより負けが少なければ8勝以上できる可能性がある。

提出コード

s = gets.strip

if s.chars.select { |c| c == 'x' }.count >= 8
    puts "NO"
else
    puts "YES"
end

ところで、↑のコードでxの個数をカウントする部分を

s.chars.select { |c| c == 'x' }.count

としているのは冗長で、もっとシンプルに

s.count("x")

と書けることをあとで知った。便利。

C - Best-of-(2n-1)

こんなのもう解けないよ…。
でも「数学から逃げるな」、ということで解説PDFを読みながらなんとかコードを書いてみよう。

問題

高橋君と青木君がゲームをします。 どちらかが合計で$$N$$回勝つまでゲームを繰り返し行います。

$$1$$回ゲームを行ったとき、高橋君が勝つ確率は$$A%$$、青木君が勝つ確率は$$B%$$、どちらも勝たず引き分けとなる確率は$$C%$$です。
ゲームが行われる回数の期待値を求めて、以下のように出力してください。

求める期待値は互いに素な整数$$P$$, $$Q$$を用いて$$P/Q$$と表せます。
$$R×Q≡P (\bmod 10^9+7)$$となる$$0$$以上$$10^9+6$$以下の整数$$R$$を出力してください。
(この問題の制約下で、このような$$R$$は必ず一意に存在します。)

$$1≤N≤100000$$
$$0≤A,B,C≤100$$
$$1≤A+B$$
$$A+B+C=100$$
入力はすべて整数である

考察

いややっぱこれむずすぎる。今後の課題とさせていただきあmす。

© Akihito Ikeda - Last update 26.11.2020 00:01.