#P7996. [WFOI - 01] 硬币(coin)
[WFOI - 01] 硬币(coin)
题目描述
你面前有一排 堆硬币排成一线,同一堆硬币的面值相同,记第 堆硬币的面值为 。而每堆硬币的数量都相同,记为 。
现在你知道每第 堆硬币的面值 ,你需要确定一个正整数 ,使得每堆硬币的总金额的方差最接近于一个正整数 。
两数 “最接近” 的定义:两数之差的绝对值最小。
方差定义:方差 $s ^ 2 = \cfrac{(a_1 - \bar x)^2 + (a_2 - \bar x) ^ 2 + \cdots + (a_n - \bar x) ^ 2}{n}$,其中 代表 的平均值。
输入格式
第一行两个数 。
第二行 个数,第 个数表示 ,表示第 堆硬币的面值 。
输出格式
一行一个正整数,表示符合题意的 值。如果有不同的答案,输出最小的一个。如果无论 取什么值方差都为 ,输出一行 No answer!
。
7 47
7 2 4 6 3 7 10
3
4 4
4 4 4 4
No answer!
提示
【样例 解释】
当 时,第 个堆的硬币金额为 ,这些硬币堆的金额分别为 ,可以计算得这些硬币金额的方差约为 ,可以证明当 时方差最接近 。
【样例 解释】
可以发现,无论 的取值,方差都会为 ,所以输出 No answer!
。
【数据规模】
本题采用 Subtask 捆绑测试。
Subtask 编号 | |||
---|---|---|---|
Subtask #0 | |||
Subtask #1 | |||
Subtask #2 | |||
Subtask #3 |
对于 的数据,,。记原来 数组的方差为 ,则数据满足 或 。
【提示】
本题读入量较大,请使用合适的读入方式。此处推荐快速读入模板,对于 语言,你也可以使用 scanf
语句完成读入。
为避免卡精度,建议 C/C++
选手使用 类型,并不建议使用 eps
。