天生我材必有用,千金散尽还复来。 仰天大笑出门去,我辈岂是蓬蒿人。 大鹏一日同风起,扶摇直上九万里。 十步杀一人,千里不留行。 事了拂衣去,深藏身与名。 安能摧眉折腰事权贵,使我不得开心颜! 且乐生前一杯酒,何须身后千载名? 愿将腰下剑,直为斩楼兰。
 

魔术师的猜牌术

魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是黑桃3。如此下去,观众看到放在桌子上牌的顺序是:
黑桃 A 2 3 4 5 6 7 8 9 10 J QK
红桃 A 2 3 4 5 6 7 8 9 10 J QK
问魔术师手中牌的原始顺序是什么?

 

分析:
  原始牌看成一个圈,圈上有26个空位,已知第一个是b1,然后按一定顺序,往后数空位,第三个空位就是下一张牌,牌点数依次增加·,判断前13还是后13,输出时直接输出。

代码:

  

#include<iostream>

using namespace std;
int main(){
    int a[26]={0},num = 1,time = 2;//time表示目前出现过几次空
    for(int i = 0 ;i < 26;i++){
        if(a[i] == 0){
            if(time == 2){
                a[i] = num;
                time = 0;
                num++;
            }else{
                time++;
            }
        }
        if(num <= 26 && i >= 25){
            i = 0;//形成环形,未填满就继续填
        }
    }
    for(int i = 0;i < 26;i++){
   //     cout << a[i] << endl;
        if(a[i] > 13){
            if(a[i] == 26)
                cout << "r13" << endl;
            else
                cout << "r" << a[i] % 13 << endl;
        }else{
            cout << "b" << a[i] << endl;
        }
    }
    return 0;
}

 

posted @ 2019-03-04 18:17  gudy  阅读(320)  评论(0编辑  收藏  举报