魔术师利用一副牌中的13张红桃,预先将它们排好后迭在一起,牌面朝下。对观众说:“我不看牌”,只数数就可以猜到每张牌是什么,我大声数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是红桃A,将红桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是红桃2,也将它放在桌子上。第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是红桃3.这样依次将13张牌全翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的? 输入格式要求:无 输出格式要求:"%d "(%d后面有一个空格),全部数据输出后再输出一个换行"\n"用c语言写
时间: 2024-03-25 22:37:11 浏览: 189
这道题目可以通过模拟魔术师的操作,得到原始次序。具体实现如下:
```c
#include <stdio.h>
int main() {
int arr[13];
int i, j, k;
for (i = 0; i < 13; i++) {
arr[i] = i + 1;
}
int res[13];
for (i = 0; i < 13; i++) {
j = i;
k = arr[i];
while (k != 0) {
j++;
if (j == 13) {
j = 0;
}
if (arr[j] != 0) {
k--;
}
}
res[j] = arr[i];
arr[i] = 0;
}
for (i = 0; i < 13; i++) {
printf("%d ", res[i]);
}
printf("\n");
return 0;
}
```
运行结果示例:
```
1 3 5 7 9 11 13 2 6 10 4 12 8
```
阅读全文