AtCoder Beginner Contest 158に参加しました。
今回はAtCoder Biginners Contest(以下ABC)に参加したので、それのご報告。結果は、C問題まで解いて、D問題が時間切れという感じです。一応今までの最高記録ではあるけど、今回の問題(自分が解いた範囲)は簡単に感じたので、まだまだ実装までのスピードが課題ですわな...
一応URL張っときます。
https://atcoder.jp/contests/abc158
さて、実際に僕が解いてACを出せたのは以下の3つの問題です。(コピペです。後、以下ネタバレ注意)
A.
AtCoder 市には つの駅があり、 の番号がつけられています。
これらの駅は、それぞれ鉄道会社A, Bのいずれかが管理しています。管理状況は長さ の文字列 で表され、駅 は が A
のとき鉄道会社 A が、B
のとき鉄道会社 B が管理しています。
鉄道会社 A が管理している駅と、鉄道会社 B が管理している駅の間には、交通の便のためにバスを運行することになりました。
実際にバスが運行することになる駅の組み合わせが存在するかどうかを判定してください。
B.
高橋君は青と赤の 色のボールを持っており、これらを一列に並べようとしています。
初め、列にボールはありません。
根気のある高橋君は、次の操作を 回繰り返します。
- 列の末尾に、 個の青いボールを加える。その後、列の末尾に 個の赤いボールを加える。
こうしてできる列の先頭から 個のボールのうち、青いボールの個数はいくつでしょうか。
C.
消費税率が %のとき 円、 %のとき 円の消費税が課されるような商品の税抜き価格を求めてください。
ただし、税抜き価格は正の整数でなければならないものとし、消費税の計算において小数点以下は切り捨てて計算するものとします。
条件を満たす税抜き価格が複数存在する場合は最も小さい金額を出力してください。また、条件を満たす税抜き価格が存在しない場合は -1
と出力してください。
A問題はちょっとややこしいですが、要は"AAA"と"BBB"を排除しろっていうだけの問題だったので、簡単です。(解いてるときは"本当にこれでええのんか!?"と逆に不安になるほど)
B問題も10^100とかいう不穏な数字があるように見えて、ただ単に十分たくさん試行してるから試行回数の限界についての考察は不要だよというやさしさなので、気にする必要はなしで、気にする事は整数の型がlongでないといけないという1点のみ。
型を間違えてペナルティもらったとかそんなんないし
C問題は一瞬どうしようかと迷いましたが、出力したい値をxとして、このXを解とする次の2つの方程式の解の小数点以下を切り捨てた値がA,Bとそれぞれ一致するかを確かめればおk。(下図のようにしました。)
今回の問題では、ループ処理をi=1からやったとしても、1500回もいかないので、このやり方なら速度的には十分だろうなと思い、この通りに実装してみたらACもらえました!
簡単だったとはいえ、解けると楽しいんだわこれが。来週もあると思うので、次回のコンテストでまたCまで解けたらそろそろ本格的にアルゴリズム勉強しようかな....................................................自信ないけど。まあ、ぼちぼちやってきますわ。
p.s.
コンテストが終わった後にデュエプレで1試合だけしたんだが、こんな事あんねんな。
デュエマ超うまいやん俺。