マジシャンがカードをめくる
1104 ワード
マジシャンがトランプをひっくり返す:マジシャンはトランプの中の13枚の黒桃を事前に並べてから、トランプを下に向けて手に置いた.1回目は1枚のカードで、ひっくり返すとちょうどAで、デスクトップの上に置いて、2回目は2枚のカードで、1を数えるのは手の中のカードの下に置いて、2を数えるのはちょうど2で、デスクトップの上に置いて、更に3枚のカードを数えて、ついでに1、2を数えるのは手の中のカードの下に置いて、3枚目のカードをひっくり返すのはちょうど3で、依然としてデスクトップの上に置いています.このように続けて、手の中の13枚のカードが全部ひっくり返るまで、この時デスクトップのカードの順番はちょうどA、2、3、4、5、......、J、Q、Kです.プログラミングしてマジシャンの手にある13枚のカードの元の順序を見つけてください.
#include
using namespace std;
struct Node
{
int value;
Node *next;
};
int main()
{
Node *head = NULL, *temp, *prev = NULL;
for (int i = 0; i < 13; i++)
{
temp = new Node;
temp -> value = 0;
if (head == NULL)
head = temp;
if (prev != NULL)
{
prev -> next = temp;
}
prev = temp;
}
temp -> next = head;
temp = head;
temp -> value = 1;
for (int i = 2; i <= 13; i++)
{
for (int j = 0; j < i; j++)
{
temp = temp -> next;
if (temp -> value != 0)
j--;
}
temp -> value = i;
}
temp = head;
do
{
cout << temp -> value << " ";
temp = temp -> next;
} while (temp != head);
return 0;
}