-
题目地址:http://ac.jobdu.com/problem.php?pid=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年浙江大学计算机及软件工程研究生机试真题
-
本题目技巧在于数组的巧妙使用。
将数据具体内容当做另外一个数组下标,统计同成绩人数。
这在九度的很多题目中都有使用。 - C++ AC
-
#include <stdio.h> #include <string.h> const int maxn = 1002; const int maxm = 102; int array[maxn]; int numArr[maxm]; int i; int n; int main(){ while(scanf("%d",&n) != EOF){ if(n == 0){ break; } memset(numArr, 0 , sizeof(numArr)); for(i = 0 ; i < n ; i++){ scanf("%d",&array[i]); numArr[array[i]]++; } int score; scanf("%d",&score); printf("%d\n", numArr[score]); } return 0; } /************************************************************** Problem: 1018 User: wangzhenqing Language: C++ Result: Accepted Time:10 ms Memory:1024 kb ****************************************************************/
Java AC
-
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.StreamTokenizer; public class Main { /* * 1007 */ public static void main(String[] args) throws Exception{ StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); while (st.nextToken() != StreamTokenizer.TT_EOF) { int n = (int) st.nval; if (n == 0) { break; } int array[] = new int[n]; int numArr[] = new int[102]; for (int i = 0; i < n; i++) { st.nextToken(); array[i] = (int)st.nval; numArr[array[i]]++; } st.nextToken(); int score = (int)st.nval; System.out.println(numArr[score]); } } } /************************************************************** Problem: 1018 User: wangzhenqing Language: Java Result: Accepted Time:150 ms Memory:22828 kb ****************************************************************/