Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題: "Income Inequality"
onlinejudge.u-aizu.ac.jp
統計データを処理する際,真っ先に平均値を計算することが多い. 確かに,平均値は,データの傾向を把握するためのよい指標だが,常に最善とは限らない. 場合によっては,平均値がデータの理解を妨げることもある.
たとえば,国民所得を考えてみよう. 所得格差という言葉が示すように,少数の人が国民所得の大部分を得ている国が多い. このような場合,所得の平均値は,大多数の国民の所得よりはるかに高くなってしまう. 平均値を典型的な国民の所得と見なすのは間違いである.
以上のような事情を具体的なデータで検証してみよう. n 人の人の所得 a1,… ,an が与えられる. その中で,平均値 (a1 + … + an) / n 以下の所得の人の人数を答えるプログラムを書いてほしい.
僕が作成、提出したコードは、以下のとおりです。
Aizu Online Judge in C++ #Volume16 - 1624 : Income Inequality
/* Aizu Online Judge in C++ #Volume16 - 1624 : Income Inequality https://onlinejudge.u-aizu.ac.jp/problems/1624 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; int main(void){ while(1){ int n; cin>>n; if(n==0){ return 0; } vector<int> a(n); int sum=0; for(int i=0;i<n;i++){ cin>>a[i]; sum+=a[i]; } sum/=n; int cnt=0; for(int i=0;i<n;i++){ if(a[i]<=sum){ cnt++; } } cout<<cnt<<endl; } }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/