AOJ 0049 Blood Groups
問題
血液型の分類 | Aizu Online Judge
各血液型の人数を数える問題です。
解説
入力には生徒の番号と謎のカンマが入っていますが、これらは問題を解く上では関係ありません。
数えるための配列を作って、v[0]~v[3]までをA,B,AB,O型のように、出力する順番で対応させます。
データはいくつ来るか分からないので、while(cin>>)を使って読める分だけ読みます。
実際に使うのはstring s だけで、このsによって配列のどの添字に足すかを分岐させます。
最後に配列の中身を4つ分出力して終了です。
#include <bits/stdc++.h> #define rep(i,j,k) for(int i=(int)j;i<(int)k;i++) #define rrep() #define Sort(x) sort((x).begin(),(x).end()) #define all(x) (x).begin(),(x).end() #define fi first #define se second #define vi vector<int> #define INF (int)1e9 #define INFL 1e18 #define MOD 1000000007 #define pb push_back #define MP make_pair typedef long long int ll; typedef std::pair<int,int> P; int D=1; int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0}; using namespace std; int main(){ int a; char c; string s; int v[4]={}; while(cin>>a>>c>>s){ if(s=="A")v[0]++; else if(s=="B")v[1]++; else if(s=="AB")v[2]++; else v[3]++; } rep(i,0,4)cout<<v[i]<<endl; return 0; }