1.题目描述:魔术师利用一幅牌中的13张黑桃,预先将他们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么。魔术师将最上面的那张牌数为1,把他翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序数1,2,将数的1放到牌的最后面,然后第二张翻过来正好是2,以此次这样,数了十三遍,正好将这十三张全部数出来。问魔术师原始的牌序是什么。
2.源代码:
#include<iostream>
using namespace std;
int main()
{
int b=0;
int a[13] = {0};
int o = 0;//用来记录走到哪个位置了;
for (int i = 1; i <=13; i++)
{
int k = 0;//用来记录向后数了几个了;
for (int j = o;; j++)//向后进行遍历;
{
if (j > 12) { j =j%12; }
if (a[j]==0) { k++; }//将之前抽出的牌在这次循环中排除;
if (k == i) { a[j] = i;o=j; break; }// 如果数的数达到符合的条件就输出;
}
for (int i = 0; i < 13; i++)//遍历输出;
{
cout << a[i] << " ";
}
return 0;
}