Description
The magician shuffles a small pack of cards, holds it face down and performs the following procedure:
- The top card is moved to the bottom of the pack. The new top card is dealt face up onto the table. It is the Ace of Spades.
- Two cards are moved one at a time from the top to the bottom. The next card is dealt face up onto the table. It is the Two of Spades.
- Three cards are moved one at a time…
- This goes on until the nth and last card turns out to be the n of Spades.
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
1 #include <iostream> 2 struct node 3 { 4 int data; 5 node* next; 6 }; 7 int main() 8 { 9 int n,k; 10 cin>>n; 11 node*first=new node; 12 node*last; 13 14 while(n!=0) 15 { cin>>k; 16 node*t; 17 first->data=k; 18 first->next=first; 19 last=first; 20 for (int i=k-1;i>0;i--) 21 { 22 node*current=new node; 23 current->data=i; 24 last->next=current; 25 current->next=first; 26 first=current; 27 while(true) 28 { 29 t=first; 30 for (int j=0;j<i;j++) 31 { 32 t=t->next; 33 } 34 if (t==current) 35 { 36 break; 37 } 38 first=first->next; 39 last=last->next; 40 } 41 } 42 last=first->next; 43 std::cout<<first->data<<" "; 44 while(last!=first) 45 { 46 std::cout<<last->data<<" "; 47 last=last->next; 48 } 49 std::cout<<std::endl; 50 n--; 51 } 52 return 0; 53 }