1 条题解

  • 0
    @ 1997-4-4 12:05:48

    【深基7.习9】培训

    解题思路

    用结构体保存学员。培训后年龄加 1,成绩乘 6 再除 5,超过 600 的截为 600。

    正确性说明

    提高 20% 等于乘 1.2,即乘 6/5;题目保证原分数为 5 的倍数,整数除法无损。取较小值满足满分上限。

    易错点

    年龄也要增加;先乘后除,避免 6/5 的整数结果变为 1。

    复杂度

    时间 O(n),空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    struct Student {
        string name;
        int age, score;
    };
    Student train(Student s) {
        s.age++;
        s.score = min(600, s.score * 6 / 5);
        return s;
    }
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        int n;
        cin >> n;
        while (n--) {
            Student s;
            cin >> s.name >> s.age >> s.score;
            s = train(s);
            cout << s.name << " " << s.age << " " << s.score << "\n";
        }
        return 0;
    }
    
    • 1