我有特殊的懵题技巧
题目描述
传说,有一种特殊的懵题技巧。在遇到不会做的选择题时,如果RP 足够好,就可以全
部懵对:
秘籍是这样的:
三长一短选最短(如果某个选项的长度,不高于任意其他选项的一半,则选择这个选项)
三短一长选最长(如果某个选项的长度,不低于任意其他选项的两倍,则选择这个选项)
参差不齐选B(如果选项AC 均比BD 长,或者BD 均比AC 长,则选择B 选项)
有长有短选D(如果某两个选项的长度均大于其他两个选项的2 倍,则选择D)
不会就懵C(其他情况懵C)
P.S. 优先级是从上到下的
输入格式
给出4 个字符串,每个字符串一行。
第一行是A 选项。
第二行是B 选项。
第三行是C 选项。
第四行是D 选项。
字符串的长度均小于100,且不包含空格.
输出格式
输出单个字符,字符为“A”、“B”、“C”、“D”中的一种。
没有引号,注意大小写。
样例输入
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxx
xxxx
xxx
样例输出
A
1 #include<cstdio> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 char opl = 0,opu = 0,a[105]; 7 int b[5],mn = 1,mx = 1,i,j; 8 int cmp(int a,int b) 9 { 10 return a < b; 11 } 12 int main() 13 { 14 for(i = 1;i <= 4;i++) 15 { 16 scanf("%s",a); 17 b[i] = strlen(a); 18 if(b[i] < b[mn]) 19 { 20 mn = i; 21 } 22 if(b[i] > b[mx]) 23 { 24 mx = i; 25 } 26 } 27 for(i = 1;i <= 4;i++) 28 { 29 if(i != mn && b[mn] * 2 > b[i]) 30 { 31 opl = 1; 32 } 33 if(i != mx && b[mx] < b[i] * 2) 34 { 35 opu = 1; 36 } 37 } 38 if(opl == 0) 39 { 40 printf("%c",char('A' - 1 + mn)); 41 return 0; 42 } 43 else if(opu == 0) 44 { 45 printf("%c",char('A' - 1 + mx)); 46 return 0; 47 } 48 else if(b[1] > b[2] && b[1] > b[4] && b[3] > b[2] && b[3] > b[4]) 49 { 50 printf("B"); 51 return 0; 52 } 53 else if(b[1] < b[2] && b[1] < b[4] && b[3] < b[2] && b[3] < b[4]) 54 { 55 printf("B"); 56 return 0; 57 } 58 sort(b + 1,b + 5,cmp); 59 if(b[2] * 2 < b[3]) 60 { 61 printf("D"); 62 return 0; 63 } 64 else 65 { 66 printf("C"); 67 return 0; 68 } 69 }