题解:P15016 [UOI 2020 II Stage] 考试

· · 题解

P15016 [UOI 2020 II Stage] 考试 题解

题目描述

哥萨克胡子最近参加了一场大型考试(题目比乌克兰统考还多!)。他已经知道,除了最后一道题,他所有题目总共能得 n 分。关于最后一道题,哥萨克只记得他在答案处写了一个正数 a(如果哥萨克将答题卡留空,则 a = 0)。考试结束后,他得知该题的正确答䅁是数字 b

根据规则,哥萨克的分数按如下方式确定:

请注意,考试分数不能低于 0。也就是说,如果计算出的分数为负数,那么他将得到 0 分。

你的任务很简单:告诉哥萨克他将在考试中获得多少分。

思路

规则一:判断是否哥萨克胡子答对了,即 ab 是否相等。

规则二:判断是否哥萨克没有留空但答错了,即是否 a \neq 0a \neq b

规则三:判断是否哥萨克胡子将答题卡留空,即是否 a = 0

注意:考试分数不能低于 0,所以要输出最终得分和 0 之间大的那一个。

AC 代码

#include <bits/stdc++.h> 
using namespace std; 

int main () {
    ios::sync_with_stdio (0); 
    cin.tie (0); 
    cout.tie (0); 
    int n, a, b, c; 
    cin >> n >> a >> b >> c; 
    if (a == b) { //(即哥萨克胡子答对了)
        n += c; 
        cout << max (n, 0); 
    }
    if (a != 0 && a != b) { //(即哥萨克没有留空但答错了)
        n -= c / 4; 
        cout << max (n, 0); 
    }
    if (a == 0) {//(即哥萨克胡子将答题卡留空)
        cout << max (n, 0); 
    }
    return 0; 
}

感谢观看!