PKU 3032 Card Trick
http://poj.org/problem?id=3032
マジシャンがn枚のトランプの山で、次のような操作ができるようなトランプの積み方を出力せよというような問題。
1. まず1枚を山札の一番上から一番下に回す。そのあと、一番上の札を場に出す。
この時、その札は1。
2. 次に2枚のカードを一番上から一番下に回す。そのあと、一番上の札を場に出す。
この時、その札は2。
...
n. n枚のカードを一番上から一番下に回す。そのあと、一番上の札を場に出す。
この時、その札はn。
手順を逆に回す。
添字とかでいろいろとこんがらがった。
n<=13だから、トランプを持っていれば埋め込みでもいいような気がした。
main(){ int t; cin>>t; while(t--){ int n; cin>>n; int card[n+1]; rep(i,n){ rep(j,i)card[i-j]=card[i-j-1]; card[0]=n-i; rep(j,n-i){ rep(k,i+1)card[i-k+1]=card[i-k]; card[0]=card[i+1]; } } rep(i,n){ if(i)cout<<' '; cout<<card[i]; } cout<<endl; } }