魔术师利用一副牌中的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;}