#include <iostream>
#include <algorithm>
using namespace std;
struct deck{
int value;
char suit;
};
deck card[5];
void transfer(string inp, deck& c) {
int tmp = 0;
switch(inp[0]) {
case 'A':
tmp = 1;
break;
case 'J':
tmp = 11;
break;
case 'Q':
tmp = 12;
break;
case 'K':
tmp = 13;
break;
default:
for(int i = 0; i < inp.length() - 1; i++) {
tmp = tmp * 10 + (inp[i] - '0');
}
break;
}
c.value = tmp;
c.suit = inp[inp.length() - 1];
}
bool compare(const deck& a, const deck& b) {
return (a.value < b.value) || (a.value == b.value && a.suit < b.suit);
}
void print() {
for(int i = 0; i < 5; i++) {
switch(card[i].value){
case 1:
cout << 'A';
break;
case 11:
cout << 'J';
break;
case 12:
cout << 'Q';
break;
case 13:
cout << 'K';
break;
default:
cout << card[i].value;
break;
}
cout << card[i].suit;
if(i != 4) {
cout << ' ';
}
}
cout << endl;
}
void judge() {
sort(card, card+5, compare);
//print();
do{
if(card[0].suit == card[1].suit) {
int base = card[1].value;
int posOfSmallest = 2;
if(!compare(card[posOfSmallest], card[3])) {
posOfSmallest = 3;
}
if(!compare(card[posOfSmallest], card[4])) {
posOfSmallest = 4;
}
base += posOfSmallest - 1;
deck tmp[2];
int count = 0;
for(int i = 2; i < 5; i++) {
if(i != posOfSmallest) {
tmp[count++] = card[i];
}
}
if(!compare(tmp[0], tmp[1])) {
base += 3;
}
if(base % 13 == card[0].value) {
print();
break;
}
}
}while(next_permutation(card, card+5, compare));
}
int main() {
int cases;
cin >> cases;
for(int css = 1; css <= cases; css++) {
for(int i = 0; i < 5; i++) {
string tmp;
cin >> tmp;
transfer(tmp, card[i]);
}
cout << "Problem " << css << ": ";
judge();
}
return 0;
}
因篇幅问题不能全部显示,请点此查看更多更全内容