AtCoder Beginner Contest 171

ABC171に参加しました。

一時間ほどで5完出来たので、1WAと難易度を差し引いても悪くはなかったのではないでしょうか。茶diffで詰まることはなくなってきたので嬉しいですね。

 

Tasks - AtCoder Beginner Contest 171

All Submissions - AtCoder Beginner Contest 171

 

A-alphabet

αから'a'を引いて非負になればαは小文字ということになります。

文字コードが順に、...A~Z,...........a~z........というように並んでいるからです。

(自分は覚えていないので適当にテストしました)

 

B-Mix Juice

Pを配列で受け取って、sortし、小さいほうから順にK個足して出力します。

 

C-One Quadrillion and One Dalmatians

これはめんどくさかったです。

命名ルールを見ていくと、a~zまで順に使っていき、zまでで1サイクルになっているのが分かります。a~zまでの26文字で繰り上がりの計算をしていく感じかなあということでzzにあたる702やzzzにあたる18278を26で割ってみました。702/26=27,18278/26=703というようになるので、これはaaaやaaaaの番号になります。普通に数を数えるときは10で割って繰り上がりを考えるので、同じようにすればいいと考え、26で割った余りがa~zのどこに対応するかを試してみました。その過程で混乱して1WAを出しましたが、すぐに修正できたので良かったということにしておきます。

解いている間は26進数の問題だというようなことは意識していませんでした。次からはもっとすばやく解けると思います。

 

D-Replacing

各要素を大きさごとに一括で扱っており、最後に足し合わせることになります。なので、ある数がいくつ存在するかだけが分かっていればいいことになります。mapである数がいくつ存在するかを管理すれば簡単に一回の操作を行うことができるので、すぐに解くことが出来ました。

 

E-Red Scarf

xorには苦手意識があったのですが、問題文を見ながらいくつか試してみると解けてしまいました。

ひとまず1と2のXORを考えると、これは3になります。どうように、3と1のXORは2、3と2のXORは1です。XORの順番は入れ替えても問題がなく、同じ数が偶数回XORされるとどのような順番であっても0になるということが分かります。この状態で、入力例1を見ると、4つの要素がそれぞれ三回ずつXORされていることに気が付きました。ここで、Nが奇数の場合もあると話は変わってきますが、偶数という制約があるので、全てのXORを取ると各すぬけくんに書き込まれた数をそれぞれ1回だけXORしたものが残ります。初めにこれを計算しておいて、その後順に各すぬけくんが計算したほかのすぬけくんたちのXORともう一度XORすることで、本猫(?)に書き込まれた数が分かります。

 

今回は以上です。

茶diffの取りこぼしがなくてよかったです。