获得等级"x"所需的最少分数(C++)(已解释)
Minimal amount of points needed to get grade "x" (C++) (explained)
我正在做一个c++在线挑战,我在这部分卡住了。
基本上,挑战如下:
"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"级,即使他的最后一次测试得到最高分,我们必须输出"不可能"。"
例子:
输入:5100 100 100 100
输出:50
输入:510 20 30 40
输出:不可能的
输入:2100 100 100 100
输出:0
输入:483 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: 1n";
}
else if((t1+t2+t3+t4)/4>=60 && (t1+t2+t3+t4)/4<=69)
{
cout << "Grade: 2n";
}
else if((t1+t2+t3+t4)/4>=70 && (t1+t2+t3+t4)/4<=79)
{
cout << "Grade: 3n";
}
else if((t1+t2+t3+t4)/4>=80 && (t1+t2+t3+t4)/4<=89)
{
cout << "Grade: 4n";
}
else if((t1+t2+t3+t4)/4>=90 && (t1+t2+t3+t4)/4<=100)
{
cout << "Grade: 5n";
}
int t5;
return 0;
}
我也做了一些数学计算,得出了这个结论。
(100 + 100 + 100 + 100 + x)/5> = 90
(400 + x)/5> = 90
80+x/5>= 90
x/5>= 10
x>= 50
这基本上是上面的第一个输入/输出示例,以数学方式。我不确定我将如何编码这个虽然。任何想法都欢迎!
谢谢。
关键是您必须使用所需的平均点数来计算结果。基本上,如果获得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;
}
(t1 + t2 + t3 + t4 + t5)/5 = K
其中K等于给定K范围内的最小数(如果为3,则K = 70)
解t5:
t5 = 5k - t1 - t2 - t3 - t4
如果t5 <= 100,那么t5是你的答案,否则是不可能的
- 请解释"函数1(p1,p2,p3);"的输出
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 被解释为低级别const的const对象的地址
- 计算每个节点的树高,帮助我解释这个代码解决方案
- MSVC将仅移动结构参数解释为指针
- 内联程序集printf将整数解释为地址
- 有人能解释一下为什么下界是这样工作的吗C++的
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- 你能解释一下什么运行时错误是如何解决它的吗?
- 请解释字谜的代码,我看不懂计数器数组,每个值已经是0
- 有人可以向我解释为什么控制台输出 0 吗?
- 有人可以解释一下这段代码如何能够反转字符串
- 在 C++ 中解释多维向量的语句时感到困惑
- 解释一下 for (char c : str) 的作用?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- 隐式重新解释引用时强制转换,没有警告/错误
- 有人可以在 c++ 中解释数组的这种输入
- 有人可以解释一下这个矩阵幂函数是如何工作的吗?