//魔术师利用一副牌中的13张黑桃，预先将它们排好后迭在一起，并使牌面朝下。然后他对观众说：我不看牌，只要数数就可以猜到每张牌是什么，我大声数数，你们听，不信？
//你们就看，魔术师将最上面的那张牌数为1，把它翻过来正好是黑桃A，他将黑桃A放在桌子上，然后按顺序从上到下数手中的余牌，第二次数1、2，将第一张牌放在这迭牌的下面，
//将第二张牌翻过来，正好是黑桃2，也将它放在桌子上，第三次数1、2、3，将前面两张依次放在这迭牌的下面，再翻第三张牌正好是黑桃3，这样依次进行，将13张牌全部翻出来，
//准确无误。问魔术师手中的牌原始次序是怎样安排的？


#include<stdio.h>

int a[14];

int main()
{
    int i, j=1, n;
    printf("魔术师手中的牌原始次序是:\n");
    for( i=1; i<=13; i++ )
    {
        n=1;
        do
        {
            if(j>13)
                j=1;
            if(a[j])  /*盒子非空*/
                j++;
            else  /*盒子为空*/
            {
                if(n==i)
                    a[j]=i;
                j++;
                n++;
            }
        }
        while(n<=i);
    }
    for( i=1; i<=13; i++ )
        printf("%d ", a[i]);
    printf("\n");
   
    return 0;
}


//运行结果：

//魔术师手中的牌原始次序是:
//1 8 2 5 10 3 12 11 9 4 7 6 13 
