2020牛客寒假算法基础集训营4.G——音乐鉴赏【概率】

题目传送门


题目描述

作为“音乐鉴赏”课的任课老师,你的课程作为刷学分好课一直受到广泛欢迎。但这一学期,学校制定了新的标准,你的课的优秀率(分数超过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%。


备注:

10 n 100000 10 \le n \le 100000


题解

  • 如果随机占比为 x ,一个人分数为 scorescore ,那么他优秀的概率为 ( s c o r e 90 ) ( 1 x ) 90 x \frac{(score-90)(1-x)}{90x}

  • 这个概率可以这么计算:首先把分数减90,大于0就优秀,那么就变成 ( s c o r e 90 ) ( 1 x ) y x 0 (score-90)*(1-x)-y*x\ge 0 ,其中y是一个随机的0到90之间的数字。 ( s c o r e 90 ) ( 1 x ) y x ( s c o r e 90 ) ( 1 x ) y x ( s c o r e 90 ) ( 1 x ) x y (score-90)*(1-x)\ge y*x(score−90)∗(1−x)≥y∗x,\frac{(score-90)*(1-x)}{x}\ge y ,这个概率就是上面所写的概率。

  • E = i = 1 n ( s c o r e i 90 ) ( 1 x ) 90 x = 0.1 n E=\sum_{i=1}^{n} \frac{(score_i-90)(1-x)}{90x}=0.1n ,解方程可知答案为 i = 1 n ( s c o r e i 90 ) 9 n + i = 1 n ( s c o r e i 90 ) \frac{\sum_{i=1}^n(score_i-90)}{9n+\sum_{i=1}^n(score_i-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;
}
发布了179 篇原创文章 · 获赞 109 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Q_1849805767/article/details/104287028