解説
これも燃えてそう、怖い。これについても色々後日談として書きます。
問題リンク
解法
この問題には、想定解法が2つあります。
writer解法
この解法では、 "CpCzNkSuTbEoA" を 1 つずつずらした操作を元に戻るまでの文字列を前計算する方法です。
この前計算をすることで、 $S_0$ のときに数字だった $c$ が、最終的に 10 以上になり、文字列になる場合でも前計算したものから直接使用することができます。
writer想定解
C++14:https://yukicoder.me/submissions/633770
Python3:https://yukicoder.me/submissions/633973
tester解法
$min(10,N)$ 回先に操作し、 $10\le N$ のときは $N-10$ 回文字列を1回ずらす操作をする、という方法です。この方法だと、 $S_{10}$ 以降は全て英大文字もしくは英小文字になるため、単純なループで済みます。
tester想定解
C++14:https://yukicoder.me/submissions/633767
Python3:https://yukicoder.me/submissions/633960
終わりに
新入生プログラミングコンテスト、どうだったでしょうか?個人的には出来はよかったと思います。燃えていなければ、の話ですが。(燃えるな)
後日談に色々書きますので、こちらも是非見てください!
最後まで読んでくださり、ありがとうございます!