AtCoder Beginner Contest 109
AtCoder Beginner Contest 109に参加しました。結果はA,B,Cの3完でした。
解けたところまで解説します。
A ABC333
AとBの積が偶数ならば、次にどんな数をかけても奇数にはなりません。
よって、
A * Bが奇数 -> Yes, A * Bが偶数 -> No
と分岐させれば良いです。
sample code:
Submission #3151485 - AtCoder Beginner Contest 109
B Shiritori
与えられる文字列がしりとりのルールに従っているか判定する問題です。
様々な実装が考えられますが一番単純なのは、
- 2重ループで重複がないか検査
- 前後の文字列の末尾と先頭が一致しているか検査
だと思います。
2の検査を行う際に文字列をstringで管理すると、back()とfront()で比較ができるので実装が少しわかりやすくなると思います。
sample code:
Submission #3153844 - AtCoder Beginner Contest 109
C Skip
始点Xから始めて数直線上の都市(点)全てに訪れたいとき、1回の最大移動距離はいくつになるかという問題です。
この問題で大事なのは、点を通過するのではなく、全ての点で止まる必要があるということです。
そのため、全ての点は始点から ( は自然数 )の距離に存在しなくてはいけません。
であるので、 は の公約数であることがわかります。
以上より、求めるのは の最小公約数になります。
最小公約数はユークリッドの互除法で簡単に求めることができます。
sample code:
Submission #3159320 - AtCoder Beginner Contest 109
(code内のgcdは greatest common divisor (最小公約数) の略です。)