実際のトランプマジックで用いられている仕込みを題材にした問題です.
愚直なアルゴリズムでは正解できません.
少しだけ,工夫をしましょう.
問題原案:tnodino
数列 は長さ の周期を持ちます.これを埋め込めばよいです.
剰余は最後にとるとして,等差数列と見るとより短い記述で正解できます.(本文 参照)
問題の内容をそのまま実装することで,数列 の値を求めることはできます.
数列の表現には「配列」を用いるとよいでしょう.
一般的な家庭用コンピュータにできる計算の限界は, 年現在 回/秒 程度であると言われています.
愚直なアルゴリズムによってこの問題を解こうとすると,時間計算量は になります.
入力されうる の最大値が であることを考えると,そのままでは実行時間制限に間に合わないだろうということが分かります.
先述した理由により愚直なアルゴリズムでこの問題に正解することはできません.
しかし,計算にかかる時間を気にしなければ正しい答えを出力します.
試しにこのプログラムを用いて, の値を少し計算してみましょう.手計算でもよいです.
すると, となります.
数列 は長さ の周期を持って,同じ値の列を繰り返すことに気付いたでしょうか.
これをコード内に埋め込むことで, 時間で答えを求めることができます.
数列 を とします.
すると,加減乗算において剰余はどこでとっても結果が変わらないので, と表されます.
(詳しい証明などは他サイト様へ委ねます.)
数列 は,初項が , 公差が の等差数列となるので, と表現できることが分かります.
したがって, を出力すればよいです.