题解 | 牛牛的考试
牛牛的考试
https://www.nowcoder.com/practice/1a7a7c8d721547a29107cf02330ffe72
1 A.3 B.21 C.0.61 D.0.577215664901532860
【三长一短】三长一短 是指在四个选项长度中恰有一个选项的长度严格小于另外三个选项,且不存在四个选项长度中恰有一个选项的长度严格大于另外三个选项;
【三短一长】三短一长 是指在四个选项长度中恰有一个选项的长度严格大于另外三个选项,且不存在四个选项长度中恰有一个选项的长度严格小于另外三个选项;
注意一下严格小于和严格大于,上述示例存在恰有一个选项的长度严格小于另外三个选项,也存在恰有一个选项的长度严格大于另外三个选项,所以这种情况应该选C。
主要加上的代码为:
if ((num[max] > 1 && num[min] > 1)||(num[max] == 1 && num[min] == 1)) {
cout << "C" << endl;
}
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
string s;
int max ;
int min ;
int num[700];
int mini ;
int maxi ;
int T;
cin >> T;
while (T > 0) { // 注意 while 处理多个 case
fill(num, num + 700, 0);
mini = 0;
maxi = 0;
max = 0;
min = 700;
for (int i = 1; i <=4; i++) {
cin >> s;
num[s.length()]++;
if (s.length() >= max) {
max = s.length();
maxi = i;
}
if (s.length() <= min) {
min = s.length();
mini = i;
}
}
if ((num[max] > 1 && num[min] > 1)||(num[max] == 1 && num[min] == 1)) {
cout << "C" << endl;
} else if (num[ min] == 1) {
cout << char(mini + 64) << endl;
} else if (num[max] == 1) {
cout << char(maxi + 64) << endl;
}
T--;
}
return 0;
}
