P8840 [传智杯 #4 初赛] 报告赋分

146 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

[传智杯 #4 初赛] 报告赋分

题目描述

花栗鼠科技大学的计算机组成原理实验最终的结课考核方式是提交一份报告。

然而作为任课老师,萝老师不希望大家过于内卷,所以指定了如下规定:

每份报告有一个卷面基础分 aa

在此基础上:

  • 若是报告字数低于 1616 页,则扣 1010 分,如果分数低于 00 分了,则记作 00 分。

  • 若是报告字数超过 2020 页,每超过 11 页扣 11 分 ,直到分数扣到 00 分为止。

现在你知道了一份报告的卷面基础分 aa 和它的页数 pp ,请你计算这份报告的最终得分。我们保证 1a100,1p501 \leq a \leq 100,1 \leq p \leq 50.

输入格式

本题有多组数据。

第一行一个整数 T(1T1000)T(1 \leq T \leq 1000) ,表示数据组数。

接下来 TT 行,每行两个整数 a,pa,p,意义如题所示。

输出格式

TT 行,每行一个整数,表示该次询问的数据最终的得分。

样例 #1

样例输入 #1

2
70 17
80 10

样例输出 #1

70
70

分析

这是第四届B组的第二题,可以说只要是学过编程语言都可以做出来,难度系数极低

  • 对于页数p
    • 如果页数过少(少于16页)的话,那么对于成绩a,需要减少十分
      • 但是注意的是,页数过少时,如果扣十分变成了负数,一定要将这个负数赋值为0
    • 如果页数过多(大于20页)的话,那么对于成绩a,每多一页都要扣一分
      • 注意,如果有卷王(页数太多了1e10页假设)的话,我们不断的进行减法操作很耗时间,所以我们要判断如果成绩小于等于0时退出减减的循环~

代码展示

#include<iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--){
        int a,p;
        cin>>a>>p;
        if(p<16)a-=10;
        else if(p>20){
            int x=p-20;
            while(x--){
                a--;
                if(a<=0)break;
            }
        }
        if(a<=0)cout<<"0"<<endl;
        else cout<<a<<endl;
    }
}

PS:第四届的传智杯B组难度真的很低~