Card Trick
Description
The magician shuffles a small pack of cards, holds it face down and performs the following procedure:
This impressive trick works if the magician knows how to arrange the cards beforehand (and knows how to give a false shuffle). Your program has to determine the initial order of the cards for a given number of cards, 1 ≤ n ≤ 13. Input On the first line of the input is a single positive integer, telling the number of test cases to follow. Each case consists of one line containing the integer n. Output For each test case, output a line with the correct permutation of the values 1 to n, space separated. The first number showing the top card of the pack, etc… Sample Input 2 4 5 Sample Output 2 1 4 3 3 1 4 5 2 Source |
#include <iostream>
#include <queue>
using namespace std;
int main()
{
int cas;
int n;
int card[14], temp;
queue<int> shuffle;
cin>>cas;
while(cas--)
{
cin>>n;
for(int i=1; i<=n; i++)
shuffle.push(i);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=i; j++)
{
temp=shuffle.front();
shuffle.pop();
shuffle.push(temp);
}
temp=shuffle.front();
shuffle.pop();
card[temp]=i;
}
for(int i=1; i<=n; i++)
cout<<card[i]<<" ";
cout<<endl;
}
return 0;
}


浙公网安备 33010602011771号