L1-083 谁能进图书馆(10分)(超详解)
L1-083 谁能进图书馆 - 团体程序设计天梯赛-练习集
看法
个人觉得这题难度不大,但是想拿满分有点难,需要花时间认真理解题目意思,确保所有情况都被考虑到!
坑点
需要分类讨论的地方太多了!
可能情况
①两个人都小于禁止年龄线
②一个人 < 禁止年龄线,另一个人 < 陪同年龄线
③一个人 < 禁止年龄线,另一个人 >= 陪同年龄线
④两个人都大于禁止年龄线
具体代码如下(C++)
#include<bits/stdc++.h>
#define debug(x) cout<<endl<<"===>"<<#x<<"="<<x<<endl;
#define output(x) cout<<x<<endl;
#define int long long
using namespace std;
void solve() {
int ban, with, age1, age2;
cin >> ban >> with >> age1 >> age2;
int ageMax = max(age1, age2);
int ageMin = min(age1, age2);
char c1 = 'N', c2 = 'N';//先默认都不被允许
//一个个判断
if(age1 >= ban) c1 = 'Y';
if(age2 >= ban) c2 = 'Y';
//如果有一个在陪同年龄上(包括),那么都允许
if(ageMax >= with) c1 = 'Y', c2 = 'Y';
printf("%d-%c %d-%c\n", age1, c1, age2, c2);
//考虑第二行
if(ageMax < ban) {
printf("zhang da zai lai ba\n");
} else if(ageMin < ban) {
if(ageMax < with) {
if(ageMax == age1) printf("1: huan ying ru guan\n");
else printf("2: huan ying ru guan\n");
} else {
if(ageMax == age1) printf("qing 1 zhao gu hao 2\n");
else printf("qing 2 zhao gu hao 1\n");
}
} else {
printf("huan ying ru guan\n");
}
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
//while(1)//个人习惯,方便调试
solve();
return 0;
}