测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题