桐桐的雷达
桐桐在去广州的路上,对高速公路上的测速雷达发生了兴趣,于是开始研究有关知识,发现在设计测速雷达时有这样一个计算问题:
一个测试雷达都有一个最高限速和一个最低限速。如果探测到的数据超过最高限速或低于最低限速,都认为驾驶员是违规的。
为了检测探测器是否正常工作,雷达自身要周期性地分析一下最近的数据。它假设多数驾驶员是遵守交通规则的,因此如果有超过10%的数据是违规的,则认为探测器可能出了问题。
现在你要编程,根据给定的数据,计算合法速度的平均速度。如果你判断出是探测器坏了,则输出0.0。
输入
第一行有3个整数A,B,C , 1≤A≤200, A≤B≤200, 1≤C≤50。分别为最低限速和最高限速和探测到的数据个数。后面一行有C个要分析有数据。
输出
只有一行,为计算的结果。
样例输入 Copy
1 50 10
42 43 44 45 46 47 48 49 50 51
样例输出 Copy
46.0
提示
注意:答案误差在1E-9内。
#include <bits/stdc++.h>
using namespace std;
using ll=long long;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
int a, b, c;
cin >> a >> b >> c;
int count = 0;
ll sum = 0;
for (int i = 0; i < c; ++i) {
ll num;
cin >> num;
if (num >= a && num <= b) {
sum += num;
}
else {
count++;
}
}
if (count * 10 > c) {
cout << "0.0";
}
else {
double avg = sum*1.0 / (c-count);
cout << fixed << setprecision(1) << avg;
}
}
试了好多次,还是不知道哪里不对,提示里的答案误差在1e-9内又是什么意思呢