魔术师的猜牌术

魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃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;
}
原文地址:https://www.cnblogs.com/gudygudy/p/10472291.html