魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃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; }