1038 统计同成绩学生(20) - PAT乙级

1038 统计同成绩学生(20)(20 point(s))

本题要求读入N名学生的成绩,将获得某一给定分数的学生人数输出。

输入格式:

输入在第1行给出不超过10^5^的正整数N,即学生总人数。随后1行给出N名学生的百分制整数成绩,中间以空格分隔。最后1行给出要查询的分数个数K(不超过N的正整数),随后是K个分数,中间以空格分隔。

输出格式:

在一行中按查询顺序给出得分等于指定分数的学生人数,中间以空格分隔,但行末不得有多余空格。

输入样例:

10
60 75 90 55 75 99 82 90 75 50
3 75 90 88

输出样例:

3 2 0

Solution:

注意点:
1, 使用memset, 需要include 头文件; 如果用vector构造全为0的数组的话, vector v(101);
2, 0-100分有101个数, 如果写100的话, case3通不过
3, 这题需要用scanf读, 用cin就case3超时, case的数据量有点大的
case3:

#include <iostream>
#include <cstring>
using namespace std;

int main() {
int a[101];
memset(a, 0, sizeof(a));
int N, K, tmp;
scanf("%d", &N);
while (N--) {
scanf("%d", &tmp);
a[tmp]++;
}
scanf("%d", &K);
for (int i =0; i < K; i++) {
if (i) cout << " ";
scanf("%d", &tmp);
printf("%d", a[tmp]);
}
return 0;
}