競技プログラミング久しぶりにリアルタイムで参戦できたので結果のまとめです。Bは奇数でなくてはいけません。Bが偶数ならNo、奇数ならYesを出力すればOKです。Cが3通りしかないので愚直に組み合わせを試行しても良いですが、計算で解けるのはかなり明らかなのでその必要は無いかなと。単語を読み取りながら、2つの条件にあっているかを逐次チェックしていけば良いです。・その単語はまだ発言していない単語であるハッシュを使って既出かどうかを確認します・その単語の先頭の文字は直前に発言した単語の末尾の文字と一致する直前の単語の末尾と同じかどうかを判定します。x3とたどることになります。x2について考えます。x1とx2に訪れるためには、DがXとx1の距離とx1とx2の距離の公約数である必要があります。効率的に=最短回数で訪れるには、Dが最大公約数であれば良いことになります。x3についても同様です。Xと各xiの距離の最大公約数を求めることになります。複数の値の最大公約数は、2つの値の最大公約数を求める処理を用意しておき、その結果と3つ目以降の値の最大公約数を順次求めていけば求まります。「偶数枚のコインが置かれたマスの数を最大化」するには、奇数のマスから奇数のマスにコインを移動することになります。総コイン数が偶数であれば、全てのマスが偶数になりますし、奇数であれば1マス以外が偶数になります。一つのポイントは、各マスにつき一度しかコインの操作が出来ない点です。・奇数のマスを見つけたら次の奇数のマス目までコインを移動するという操作を繰り返していけば良いです。最短の操作数という制約はないので、どういう経路でマス目をたどるかは気にしなくて良いですね。その制約があると、もっと難しかったと思います。添字の扱いがちょっとごちゃごちゃしてしまいました。出力の最初に操作の数を出す必要があったため、最初に操作内容(どのマスからどのマスに移動するか)を配列に入れておき、最後に結果を出力するようにしました。s[i][0],s[i][1],t[i][0],t[i][1])end結果Dで凡ミスで一度WAを食らってしまいましたがとりあえず全部解けました。今回はABC単独開催だったので、Dもそれほど難しくなかったからだと思います。順調にいけば次回あたりで水色は達成できそうな見込みです。ARCにもチャレンジしようかな。競技プログラミング問題https://beta.atcoder.jp/contests/abc108/tasks/arc102_a解法a+b、b+c、c+aが全てkで割り切れると言うことは、$$(a+b)\%k=(b+c)\%k=(c+a)\%k=0$$ということです。・aがkで割り切れる場合(a+b)%k=0よりbもkで割り切れることになり、さらにcもkで割り切れることになります。a、b、cが全てkで割り切れる場合に条件を満たすことになります。a%k=1の場合、b%k=k-1となり、c%k=1となります。その場合、(c+a)%k=0となるにはkが2である必要があります。次にa%k=2の場合、b%k=k-2となり、c%k=2となります。その場合、(c+a)%k=0となるにはkが4である必要があります。場合に条件を満たすことが分かります。よって、aが偶数の場合と奇数の場合でそれぞれ個数が変わります。