Official
A - 果物の選別 / Fruit Sorting Editorial
by
A - 果物の選別 / Fruit Sorting Editorial
by
MMNMM
初心者の方へ
- AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
- また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) は、競技プログラミングのための C++ 入門用コンテンツです。
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) は、競技プログラミングのための Python 入門用コンテンツです。
この問題は、for 文を使うなどして「糖度が \(K\) 以上の果物がいくつあるか」と「糖度が \(K\) 以上の果物の糖度の合計はいくつか」を求め、それらをもとに平均値を計算することで解くことができます。
果物の個数と糖度の合計はいずれも倍精度浮動小数点数として正確に表すことができるので、合計を個数で割った値として平均値を求めると相対誤差が \(10 ^ {-15}\) 以下になることが示せます。 この値を十分な精度で出力することで、この問題に正解することができます。
実装例は以下のようになります。
#include <iostream>
#include <iomanip>
int main() {
using namespace std;
int N, K;
cin >> N >> K;
// 糖度が K 以上の果物の
long sum = 0; // 糖度の合計
int count = 0; // 個数
for (int i = 0; i < N; ++i) {
int A;
cin >> A;
if (A >= K) { // 糖度が K 以上なら
sum += A; // 糖度の合計に足して
count += 1; // 個数を 1 増やす
}
}
if (count == 0) { // 1 つもなければ
cout << "-1" << endl; // -1
} else { // あったら
cout << setprecision(10); // 出力桁数を設定して
cout << sum * 1.0 / count << endl; // 平均を出力
}
return 0;
}
N, K = map(int, input().split())
# 糖度が K 以上の果物の
sum = 0 # 糖度の合計
count = 0 # 個数
for A in map(int, input().split()):
if A >= K: # 糖度が K 以上なら
sum += A # 糖度の合計に足して
count += 1 # 個数を 1 増やす
if count == 0: # 1 つもなければ
print(-1) # -1
else: # あったら
print(sum / count) # 平均を出力
posted:
last update:
