T681121 [语言月赛 202510] 选择题题解
题目描述
数学考试上,小 K 正在做一道选择题。这道题共有三个选项,其中 A,B,C 选项分别是 a,b,c,他自己的算出答案是 d。
小 K 会先检查选项,如果发现三个选项中有重复的选项,那么就会举手向老师示意。
否则,他会选择自己算出的选项。特别地,如果没有自己算出的选项,那么他根据“中庸之道”,会选择三个选项中第二大的数。
给出自然数 a,b,c,d,判断小 K 是否会举手示意,如果否,他最终会选择什么选项。
输入格式
输入一行四个整数 a,b,c,d,分别表示此题的 A,B,C 选项,以及小 K 算出的答案。
输出格式
输出一行表示结果。具体地:
- 如果小 K 会举手示意,则输出
Report。 - 否则,输出一个大写字母(
A、B或C),表示小 K 选择的选项。
输入输出样例
输入 #1复制
10 15 30 10
输出 #1复制
A
输入 #2复制
20 30 20 30
输出 #2复制
Report
输入 #3复制
99 95 97 75
输出 #3复制
C
说明/提示
【样例 1 解释】
A, B, C 选项分别是 10,15,30,无重复选项,因此不举手。
小 K 算出的答案是 10,所以选择 A 项。
【样例 2 解释】
A, B, C 选项分别是 20,30,20,其中 A,C 项重复,因此举手向老师示意。
【样例 3 解释】
A, B, C 选项分别是 99,95,97,无重复选项,因此不举手。
小 K 算出的答案是 75,不在选项内,因此会根据“中庸之道”选择第二大的 C 项。
【数据范围】
对于全部数据,保证 0≤a,b,c,d≤100。
思路
分类讨论,直接输出。
代码见下
#include<bits/stdc++.h>
using namespace std;
long long a[124314],b;
int main(){
cin>>a[1]>>a[2]>>a[3]>>b;
if(a[1]==a[2]||a[2]==a[3]||a[1]==a[3]){
cout<<"Report"<<endl;
return 0;
}
for(int i=1;i<=3;i++){
if(a[i]==b){
if(i==1){
cout<<"A"<<endl;
}
if(i==2){
cout<<"B"<<endl;
}
if(i==3){
cout<<"C"<<endl;
}
return 0;
}
}
if((a[1]<a[2]&&a[1]>a[3])||(a[1]>a[2]&&a[1]<a[3])){
cout<<"A"<<endl;
return 0;
}
if((a[2]<a[1]&&a[2]>a[3])||(a[2]>a[1]&&a[2]<a[3])){
cout<<"B"<<endl;
return 0;
}
if((a[3]<a[2]&&a[3]>a[1])||(a[3]>a[2]&&a[3]<a[1])){
cout<<"C"<<endl;
return 0;
}
return 0;
}

浙公网安备 33010602011771号