PAT-B:統計で同じスコアを持つ1038人の学生(20ポイント)

この質問では、N人の生徒のスコアを読み取り、特定のスコアを取得した生徒の数を出力する必要があります。

入力フォーマット:

1行目に入力すると、1 0 5 10 ^ {5}以下になります。1 05の正の整数Nは、学生の総数です。次の行は、スペースで区切られたパーセンタイルシステムのN人の学生のスコアを示しています。最後の行は、クエリされるスコアK(Nを超えない正の整数)の数を示し、その後にスペースで区切られたKスコアが続きます。

出力フォーマット:

スコアが指定されたスコアと等しい学生の数は、クエリの順序でスペースで区切られた行に表示されますが、行の最後に余分なスペースを含めることはできません。

入力サンプル:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88
出力例:

3 2 0

アイデア:
結果を配列に入れます。配列の添え字はスコアを表すため、配列は100に開かれます。定義するときは、すべて0に注意してください
。NとMを使用して、それぞれ入力数とクエリ結果数を定義します。トピックにscanfを使用します。cinを使用すると、ランタイムがタイムアウトします。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;

int main()
{
    
      
int arr[101]={
    
    0}; 
int N,M; 
cin>>N;
	
	for(int i=0;i<N;i++)
	{
    
    
		int temp;
		scanf("%d",&temp);
		arr[temp]++;
	} 

  cin>>M;
  for(int i=0;i<M;i++)
  {
    
    
  	int s=i,k; 
  		scanf("%d",&k);
  	if(s==M-1)
  	  	cout<<arr[k]<<endl;
  	  	else cout<<arr[k]<<" ";
  }
} 

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/SKMIT/article/details/113842470