C/C++の宿題片付けます 139代目

このエントリーをはてなブックマークに追加
410デフォルトの名無しさん
[2] 問題文
以下の関数を記述しなさい。
long Shuffles(int nCards, int iCut);
この関数は、以下の処理の解を返す。

1.n枚の全て異なるカードがAに置かれている。
2.上からi枚目までを取り、右隣Bに置く。
3.Aの山の一番下からカードを取り、Cの上に置く。
4.Bの山の一番下からカードを取り、Cの上に置く。
  以下、3と4を何れかの山が無くなるまで繰り返す。
5.残った山のカードをCの上に置く。
6.Cの山をAの位置に移動する。

カードが初期の並び順に戻るためには、この操作を何回繰り返せば良いか。

引数、nCardsはカードの枚数、iCutは2の操作時に分ける枚数を指定する。
回答は作成したソースと、
正しく動いている証として、Shuffles(1001,100)の実行結果を書きなさい。

[3] 環境
 [3.1] OS:問わない
 [3.2] コンパイラ名とバージョン: 問わない
 [3.3] 言語: C
[4] 期限: 一週間くらい?