問題
https://onlinejudge.u-aizu.ac.jp/courses/lesson/2/ITP1/9/ITP1_9_B (新しいタブで開く)
問題文
枚のカードをシャッフルする。
1 回のシャッフルでは、下からカードを 枚取り出し、それをカードの上に積み上げる。
例えば、下から順に abcdeefab
だった場合、 なら eefababcd
になる。
山の最初の並びと を読み込んで、最後の並びを出力してね。
複数のテストケースが与えられる。
-
が入力されたら終了。
制約
- テストケース数は を超えない
サンプル
I/O 1
aabc
3
1
2
1
vwxyz
2
3
4
-
aabc
xyzvw
1 つ目のテストケースでは、 aabc
が与えられて、シャッフルは 3 回行う。
まず 1 枚取り出し、次に 2 枚取り出し、最後に 1 枚取り出す。
最終的に aabc
になる。
考察
結合してシミュレーションするのを頑張る。
制約が小さめなので十分間に合う。
コード
int main() {
while (true) {
string s;
cin >> s;
if (s == "-") break;
int m;
cin >> m;
rep(_, m) {
int h;
cin >> h;
s = s.substr(h) + s.substr(0, h);
}
cout << s << endl;
}
return 0;
}