- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!!Problem A: Hanafuda Shuffle 花札を切る
カードを切るシミュレーションの問題。カードの枚数と、切る回数が指定される。切る操作は、カードの山の上からp枚目から連続したc枚を抜き取り、山の一番上に置く。
!入力
*まず、カードの枚数nと切る回数r。nとrに0が入力されたら全ての操作を終了する。
*続いてr回の切る操作のpとc。
!出力
*切る操作をした結果、1番上に来たカードの番号を表示する。カードの山には一番下から1,2,3,・・・,nと番号が付いている。
!データ構造
配列を用いる。
!解答例
*方法1:山を表す配列と、コピー用の配列の2つ用意しておき、コピーする分をコピー遙拝列に置いておいて、残りを移動してから、上書きする。
**解答例 [[2004da1.c]]
*方法2:配列は1つだけで、p枚目を一番上に持っていく、p+1枚目を上に持って行く、p+2枚目を・・・をc枚分繰り返せばよい。
**解答例
***C言語 [[2004da2.c]]
***Java [[hana1.java]] Javaは入力が面倒だ。
問題の意味と入力データの意味を理解し、配列を使うときに添え字の番号を間違えなければ、素直に解けるでしょう。