bを固定したときのaの組み合わせは、以下の式で求められます。(N%b)-(K-1))これを各b(K+1〜N)に対して計算して和をとれば解になります。なる文字列Sが与えられる。文字列に変換するための最小回数を求める。・文字列Sのi番目までの+と-を反転させて、なおかつ、逆順にする。反転(–+)して逆順(+–)にする。操作の制約として、必ず先頭から指定した範囲の文字列を反転させることになるので、最後の操作の直前の状態は、以下のように「-の連続と+の連続」または「-のみ」の状態になる。(-のみ)つまり、文字列の前の方から順番に+や-が連続する状態を作っていくようにする。先頭が+なので4番目に-を見つけた時点で3番目までを操作対象にする-----++・先頭が-の場合、上記の逆の操作をする以上を繰り返すと、文字列の前半が+の連続、-の連続を交互に繰り返すことになり、最終的に+のみになったら処理終了となる。最初は文字列を実際に反転させる処理を実装し、毎回文字列を先頭からチェックするような実装にしていた。連続になっていることは分かっているので、先頭に戻らずそのままi番目以降の文字をチェックすれば良いことに気づいた。与えられた非負整数Nについて、N×1,N×2,...とNの倍数をあげていく。その数の10進表記で見た場合の桁が0~9全て出そろった時の最後の数を出力する。最適な解法というのが思いつかなかったので、単純にNの倍数を上げていきチェックする方法をとった。