题目:魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是黑桃3。如此下去,观众看到放在桌子上牌的顺序是:黑桃 A 2 3 4 5 6 7 8 9 10 J Q K红桃 A 2 3 4 5 6 7 8 9 10 J Q K问魔术师手中牌的原始顺序是什么?
//题目:魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:
/*最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第
三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是
黑桃3。如此下去,观众看到放在桌子上牌的顺序是:
黑桃 A 2 3 4 5 6 7 8 9 10 J Q K
红桃 A 2 3 4 5 6 7 8 9 10 J Q K
问魔术师手中牌的原始顺序是什么?*/
//BY as1138 2011-10-17
#include <iostream>
#include <queue>
using namespace std;
int main(void)
{
queue<int> iQue;
int len=0;
int iRes[26];
int i =0;
int tem;
while(i!=26)
{
iQue.push(i++);
}
for (int j=1;j!=27;++j)
{
tem = iQue.front();
iQue.pop();
iRes[tem] = j;
if (j != 26)
{
tem = iQue.front();
iQue.pop();
iQue.push(tem);
tem = iQue.front();
iQue.pop();
iQue.push(tem);
}
}
for (int k=0;k!=26;++k)
{
if(iRes[k]>13)
cout<<"红:"<<iRes[k]-13<<" ";
else
cout<<"黑:"<<iRes[k]<<" ";
}
cout<<endl;
return 0;
}