魔术师纸牌,有空再研究

时间:2021-04-02 21:27:17
魔术师利用一副牌中的13张红桃,预先将它们排好后迭在一起,牌面朝下。对观众说:“我不看牌”,只数数就可以猜到每张牌是什么,我大声数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是红桃A,将红桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是红桃2,也将它放在桌子上。第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是红桃3.这样依次将13张牌全翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的?
输入格式要求:无
输出格式要求:"%d "(%d后面有一个空格),全部数据输出后再输出一个换行"\n"
程序运行示例:

1 8 2 5 10 3 12 11 9 4 7 6 13

#include <stdio.h>#include <string.h>#include <math.h>int main(){    int i, n, j = 1;    int a[14] = {0};    for(i = 1; i <= 13; i++)    {        n = 0;                while(n != i)        {            if(a[j] == 0)            {                n++;                if(n == i)                    a[j] = i;            }            j = j == 13 ? 1 : j+1;        }    }    for(i = 1; i <= 13; i++)        printf("%d ", a[i]);    printf("\n");    return 0;}