M-SOLUTIONS プロコンオープン
出場はできなかったが後から問題を解いた。と言っても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す。