今日迅雷笔试题一:给定5张牌(除大小王),J/Q/K代表10,A代表1,其他数字还是对应数字。5张牌中有三张加起来是10的倍数就叫有牛,任意三张加起来都不等于10就叫无牛。有牛的情况下,剩余两张加起来的和的个位数为牛数,比如4+7则牛数为1。输入要求:五张牌以逗号分隔输入;输出要求:无牛和输入错误的情况输出“none”,有牛的情况下输出牛数。
#include<iostream>
#include<map>
using namespace std;
int main(){
char a,b,c,d,e,aa,bb,cc,dd;
map<char,int> m;
m['2'] = 2, m['3'] = 3, m['4'] = 4, m['5'] = 5, m['6'] = 6, m['7'] = 7, m['8'] = 8;
m['9'] = 9, m['10'] = 10, m['A'] = 1, m['J'] = 10, m['Q'] = 10, m['K'] = 10;
while (cin>>a>>aa>>b>>bb>>c>>cc>>d>>dd>>e){
int errornum;
char sz[5] = {a,b,c,d,e};
map<char, int>::iterator ite = m.begin();
for (int q = 0; q < 5; ++q){
ite = m.find(sz[q]);
if (ite == m.end()){
cout << "none";
errornum = 0;
break;
}
}
if (errornum == 0)
continue;
int niunum=0;
int i = 0;
int j = i + 1;
int k = j + 1;
bool found = 0;
for (; i < 3; ++i){
for (j = i + 1; j < 4; ++j){
for (k = j + 1; k < 5; ++k){
if ((m[sz[i]] + m[sz[j]] + m[sz[k]]) % 10 == 0){
for (int p = 0; p < 5; ++p){
if (p == i || p == j || p == k)
continue;
else
niunum += m[sz[p]];
}
found = 1;
cout << niunum % 10 << endl;
break;
}
}
if (found)
break;
}
if (found)
break;
}
if (i = 3 && j == 4 && k == 5)
cout << "none";
}
cin.get();
return 0;
}