魔术师利用一副牌中的13张红桃,预先将它们排好后迭在一起,牌面朝下。对观众说:“我不看牌”,只数数就可以猜到每张牌是什么,我大声数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是红桃A,将红桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是红桃2,也将它放在桌子上。第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是红桃3.这样依次将13张牌全翻出来,准确无误。问魔术师手中的牌原始次序是怎样安排的? 输入格式要求:无 输出格式要求:"%d "(%d后面有一个空格),全部数据输出后再输出一个换行"\n"用c语言写
时间: 2024-03-25 08:37:11 浏览: 162
这道题目可以通过模拟魔术师的操作,得到原始次序。具体实现如下:
```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
```
相关问题
魔术师利用一副牌中的13张红桃,预先将它们排好后迭在一起,牌面朝下。对观众说:“我不看牌”,只数数就可以猜到每张牌是什么,我大声数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好
### 回答1:
是红桃A,然后继续数下去,数到第13张牌时,也翻过来,正好是红桃K。观众惊叹不已,纷纷猜测魔术师是如何做到的。其实,这个魔术的秘密在于牌的顺序已经被预先排好了,魔术师只需要按照一定的顺序数数,就可以猜到每张牌是什么。这种魔术需要魔术师对牌的顺序有着非常熟练的掌握和记忆能力,才能够做到如此精准的猜测。
### 回答2:
接着,魔术师说:“第二张牌是2”,然后翻开了第二张牌,果然是2。接着他又说:“第三张是3”,翻开来后同样正确。如此一直数到第十三张牌,每次数数都正确无误。观众们目瞪口呆,不敢相信这是真的,这怎么可能呢?
实际上,这个魔术并不是魔术,而是数学。魔术师预先将红桃牌按照A到K的顺序排好,并将它们叠在一起,顺序为A、2、3、4、5、6、7、8、9、10、J、Q、K。通过一个简单的算法,魔术师可以根据翻开的每张牌来计算接下来还有哪张牌,并顺利地完成了表演。这个算法被称为“二十一点算法”,基于的原理是可数学证明的。
总的来说,魔术师的表演展示了数学的奥妙和威力,通过巧妙的算法,让观众们享受到了神秘和惊喜。这也说明,数学并不是一门乏味的学科,它也可以娱乐人们,并带来乐趣。我们应该更加尊重和重视数学,了解它在日常生活中的应用和意义,尤其是在科学、工程、技术等领域中的必不可少性。
### 回答3:
然后他数到第二张牌,数为2,又将它翻过来正面朝上。他接着数到第三张牌,数为3,然后将它翻过来。继续数数,直到翻完所有的13张红桃牌。
这个魔术看似神奇,但实际上它是有技巧的。
首先,魔术师预先将牌在某种规律下迭好,如:黑桃、红桃、梅花、方块。然后,他将每一张牌都翻成牌面朝下,并将它们排成一列。接着开始数数,但他并不是真的数牌,而是按照一个固定的顺序快速地数数,如:1,2,3,4,5,6,7,8,9,10,11,12,13。
当他数到某个数字时,他就会用手指按一下该数字对应的牌的下边缘,这样就可以记录下该牌的位置。然后他再数下一张牌,如此循环往复,每数一张牌就记录下来,直到翻完所有的13张牌。
最后,他按照记录下来的每张牌的位置,将它们依次翻过来。观众会惊奇地发现,每张牌都被准确地猜出来了。
这个魔术的核心是记忆,魔术师需要快速地将每张牌的位置记录下来,并在最后将它们准确翻过来。因此,这个魔术需要长时间的练习和不懈的努力。
阅读全文