AtCoder Beginner Contest 174をPythonで解く

投稿日: 

Atcoder Python

B!
Daniel AgreloによるPixabay(https://pixabay.com/)からの画像

こんにちは, Shinoryoです.

今回はAtCoder Beginner Contest 174を, Pythonで解いてみた結果を書き連ねていこうと思います.

A - Air Conditioner

入力値が$30$以上かどうかをif文で判定します.

B - Distance

問題文にある条件を順に確かめていきます.

C - Repsept

$7$, $77$, $777$, ……の数列を$\{ a_i \}$とすると, これは漸化式で以下のように表されます.

\begin{align} a_i &= \left\{ \begin{aligned} & 7 & (i = 1) \\ & 10 \times a_{i-1} + 7 & (i \geq 2) \end{aligned} \right. \end{align}

$K$で割り切れるかが重要なので, $\mathrm{mod} \, K$を考えることにします.

漸化式より, ある$i$で以前に出てきた値が再度出現すると, それ以降は繰り返しになります. $\mathrm{mod} \, K$としてとれる値は$0$から$K-1$までの$K$通りしかありませんので, (鳩の巣原理より)高々$i = K$までの調査でよいことになります.

D - Alter Altar

「赤い石の左隣に置かれた白い石は災いを招く」というのは, すなわち左側に"R", 右側に"W"がまとまって存在するようにしなければならないことになります. イメージとしては, 右の方にある"R"を左の方にある"W"と入れ替えればよいことになります.

そのためには, まずは文字列に存在する"R"の個数を調べます. 最終的には左端からその個数だけ"R"が並ぶことになりますので, その部分文字列に"W"が何個あるかを調べます. その個数だけ, "R"と"W"の入れ替えを行えばよいことになります.

E以降

E以降は私の能力不足故に省略いたします.

参考にしたサイト等

Search

About Me

自分の写真
理系大学生でした. Bloggerを利用して発信を行っています.

Labels

Blog Archives