>>864
本人ではないが、考え方を。
この方法で試しに組んでみたけど、同じ答えが1秒以内にでたよ。
欲しければ、ソースみせます。

例えば、「0」というカードに着目してみる。
そうすると、0というカードは最初一番下にあって、次に下から2番目にあって・・・
と言うふうに一回シャッフルするごとに、移動していく。でn回シャッフルした
ときに初めて元の場所に戻ってきたとする。このときに、0というカードはnの周期
で動いていることになる。これからの動き方はずっと一緒。
だから、この段階で、k*n回シャッフルした後だけを見ればいいことがわかった。

 で、最初の状態でl番の位置にあったカードが、n回シャッフルした状態にm番の
位置にあったとする。そうすると、当然n回シャッフルした状態でl番での位置に
あったカードは、2n回シャッフルしたときには、m番の位置にありますよね。
ですから、n回シャッフルしたときにカードの位置がどう変化するかというマップ
を作っておけば、n回シャッフルした結果がすぐわかります。
これを利用して、n回, 2n回・・・と調べていきます。
このとき0以外の別のカード、例えば1に注目して、これが元の位置に戻ってくる
かをチェックし続けます。これで、例えば n回のシャッフルをt回したときに元に
戻ってくるなら、0と1というカードの組み合わせの周期はk * n回だということ
がわかります。ですので、同様にk * n回のシャッフルのマップを作って・・・
と以下同様です。