题目描述
作为“音乐鉴赏”课的任课老师,你的课程作为刷学分好课一直受到广泛欢迎。但这一学期,学校制定了新的标准,你的课的优秀率(分数超过90分的人数)被限制在10%以下!
为了应对这个调整,你要求所有的同学都写了一篇论文,并使用随机算法打出了0-90之间的分数,分数可能不是整数。这里的随机是指,对于在[0,90]这个闭区间上的任何一对等长的区间,分数出现在其中的概率均是相同的。在期末的分数占比为百分之多少的时候,你的课程优秀率期望恰好在10%?保证所有同学的平时成绩都高于90分。
输入描述:
输入第一行包含一个整数 n,保证n是10的倍数。
第二行包含 n 个整数,代表同学们的平时成绩。
输出描述:
输出一行一个百分数,代表期末分数占比多少为合适。保留两位小数。
输入
10
99 99 99 99 99 99 99 99 99 99
输出
50.00%
说明
需要随机占比50%。
备注:
题解
-
如果随机占比为 x ,一个人分数为 scorescore ,那么他优秀的概率为 。
-
这个概率可以这么计算:首先把分数减90,大于0就优秀,那么就变成 ,其中y是一个随机的0到90之间的数字。 ,这个概率就是上面所写的概率。
-
,解方程可知答案为 。
-
得到公式了,就很好求了~~~
AC-Code
#include<bits/stdc++.h>
using namespace std;
int main() {
int n; while (cin >> n) {
int sum = 0, tp = 0;
cin >> n;
for (int i = 0; i < n; ++i) {
cin >> tp;
sum += tp;
}
double S = sum - 90 * n;
cout << setprecision(2) << fixed;
cout << (S / (9 * n + S) * 100) << "%\n";
}
return 0;
}