A33835. 编程实现蓝桥杯 STEMA 测评,成绩排名与证书的对应关系如下:排名 奖项等级前 10% 一等奖前 30% 二等奖前 60% 三等奖前 80% 优秀奖已知小蓝同学的成绩及其他所有考生的成绩,你能帮助小蓝计算一下他能获得的奖项等级吗?输入第一行为一个整数 score,(0≤score≤100)代表小蓝的成绩。第二行为一个整数 n,(10≤n≤1000)代表参加测评的总人数。第三行为n 个整数,每个…
填空题
困难
知识点
题目描述
编程实现
蓝桥杯 STEMA 测评,成绩排名与证书的对应关系如下:
排名 奖项等级
前 10% 一等奖
前 30% 二等奖
前 60% 三等奖
前 80% 优秀奖
已知小蓝同学的成绩及其他所有考生的成绩,你能帮助小蓝计算一下他能获得的奖项等级吗?
输入
第一行为一个整数 score,(0≤score≤100)代表小蓝的成绩。
第二行为一个整数 n,(10≤n≤1000)代表参加测评的总人数。
第三行为n 个整数,每个整数代表每个参加测评考生的成绩,中间用空格分隔,成绩范围同 score。
输出
A、B、C、D、E 五个字母,分别代表一、二、三等奖,优秀奖及未获奖。注意:分数相同则等级相同,后续选手排名顺延。
【结果样例】
样例输入
95
10
99 95 90 99 80 70 71 78 77 60
样例输出
B
样例说明:小蓝在 10 名参赛选手中排名第 3,属于前 30%,故获得二等奖,
所以输出 B。另,两名 99 分的选手由于分数相同,所以并列一等奖。
参考答案
#include <iostream>
using namespace std;
const int N = 110;
int cnt[N]; //cnt[i]表示成绩为i的人数
int main()
{
int score, n;
cin >> score >> n;
cnt[score] ++;
for(int i = 1; i <= n - 1; i ++)
{
int x;
cin >> x;
cnt[x] ++;
}
int sum = 0;
for(int i = 100; i >= 0; i --)
{
sum += cnt[i];
if(score == i) break;
}
int top = sum * 100 / n; //计算百分比
if(top <= 10) cout << 'A' << endl;
else if(top <= 30) cout << 'B' << endl;
else if(top <= 60) cout << 'C' << endl;
else if(top <= 80) cout << 'D' << endl;
else cout << 'E' << endl;
return 0;
}
上一题
下一题