获得“x”等级所需的最少点数(C ++)(解释​​)

时间:2013-03-01 15:20:10

标签: c++

我正在使用C ++在线进行挑战,我被困在这一部分。

基本上,挑战如下。

“DERP是一所大学的学生。他最喜欢的课是数学。在今年年底即将到来,DERP问自己,他多少分需要得到他最后的考试中取得等级‘K’。

老师今年已经进行了5次测试,测试中可以获得的最高分数为100。

If <=60 = Grade : 1
If >=60 && <= 69 = Grade : 2
If >=70 && <= 79 = Grade : 3
If >=80 && <= 89 = Grade : 4
If >=90 && <= 100 = Grade: 5

如果你得到89.8分,你将获得4年级,而不是5年级。我们知道他前四次测试的结果--T1,T2,T3,T4。我们必须找到Derp在最后一次测试中需要多少最小点才能得到他想要的等级“K”。

输入: 在输入中,我们首先通过Derp“K”输入所需等级(2 <= K <= 5) 在第二行,我们输入他前四次测试的结果。 (0 <= T1,T2,T3,T4 <= 100)

输出: 我们必须输出Derp在最后一次测试中所需的最小分数,以便在数学中获得他想要的等级“K”。如果Derp没有机会获得成绩“K”,即使他的最后一次考试有最高分,我们也必须输出“不可能”。“

示例:

输入: 五 100 100 100 100

输出: 50

输入: 五 10 20 30 40

输出: 不可能

输入: 2 100 100 100 100

输出: 0

输入: 4 83 74 79 73

输出: 91

这是我到目前为止所得到的。

#include <iostream>

using namespace std;

int main()
{
    int grade;
    cin >> grade;
    int t1,t2,t3,t4;
    cin >> t1 >> t2 >> t3 >> t4;
    if((t1+t2+t3+t4)/4<=59)
    {
        cout << "Grade: 1\n";
    }
    else if((t1+t2+t3+t4)/4>=60 && (t1+t2+t3+t4)/4<=69)
    {
        cout << "Grade: 2\n";
    }
    else if((t1+t2+t3+t4)/4>=70 && (t1+t2+t3+t4)/4<=79)
    {
        cout << "Grade: 3\n";
    }
    else if((t1+t2+t3+t4)/4>=80 && (t1+t2+t3+t4)/4<=89)
    {
        cout << "Grade: 4\n";
    }
    else if((t1+t2+t3+t4)/4>=90 && (t1+t2+t3+t4)/4<=100)
    {
        cout << "Grade: 5\n";
    }
    int t5;
    return 0;
}

我也做了一些数学计算,然后来了。

(100 + 100 + 100 + 100 + X)/ 5个= 90

(400 + X)/ 5个= 90

80 + x / 5> = 90

x / 5> = 10

x&gt; = 50

这基本上是上面的第一个示例输入/输出,以数学方式。我不知道如何编码。欢迎任何想法!

谢谢。

2 个答案:

答案 0 :(得分:0)

(t1 + t2 + t3 + t4 + t5)/ 5 = K
其中K等于给定K的范围内的最低数字。(如果3,则K = 70)

解决t5:

t5 = 5k - t1 - t2 - t3 - t4

如果t5 <= 100,则t5是你的答案,否则不可能

答案 1 :(得分:0)

关键是你必须使用所需的平均点数来计算结果。基本上,如果得到5分,4分,3分和2分的平均值分别为90分,80分,70分和60分,则五项测试的分数总和分别为450,400,350和300。 Derp需要的分数减去他迄今为止的分数超过100分,那么就不可能获得更好的分数。实际实现可能如下所示:

int main()
{
    int mark;
    int t1, t2, t3, t4;

    std::cin >> mark >> t1 >> t2 >> t3 >> t4;
    int total = t1 + t2 + t3 + t4;
    int total_needed = 5 * (60 + (mark - 2) * 10);
    int diff = total_needed - total;

    if (diff > 100) {
    std::cout << "Impossible" << std::endl;
    } else if (diff <= 0) {
        std::cout << "You have already got enough points" << std::endl;
    } else {
        std::cout << diff << " points needed yet" << std::endl;
    }

    return 0;
}