jobdu1018

九度题目1018:统计同成绩学生人数

题目描述:

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

输入:

第1行:N
第2行:N名学生的成绩,相邻两数字用一个空格间隔。
第3行:给定分数
当读到N=0时输入结束。其中N不超过1000,成绩分数为(包含)0到100之间的一个整数。

输出:

对每个测试用例,将获得给定分数的学生人数输出。

样例输入:

3
80 60 90
60
2
85 66
0
5
60 75 90 55 75
75
0

样例输出:

1
0
2

来源:

2006年浙江大学计算机及软件工程研究生机试真题

分析:

我们可以看到,输入的分数严格限定在0-100之间,同时它又一定是一个整数。这样,输入的数据一共只有101种可能。我们只要为这101种可能分别计数,便能在输入结束时得知每一种分数的重复情况。

代码:

#include
int main() 
{
    int N;
    while(scanf("%d",&N)!=EOF && N!=0) 
    {
        int Hash[101] = {0};
        for(int i=0;iint score;
            scanf("%d",&score);
            Hash[score]++;
        }
        int searchedScore;
        scanf("%d",&searchedScore);
        printf("%d\n",Hash[searchedScore]);
    }
    return 0;
}

结果:

你可能感兴趣的:(ACM/ICPC)