题目1018:统计同成绩学生人数
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:11188
解决:5871
题目描述:
读入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
来源:
#include <stdio.h>
int main(){
int n;
while(scanf("%d",&n)!=EOF&&n!=0){
int Hash[101]={0};
int i;
for(i=0;i<n;i++){
int x;
scanf("%d",&x);
Hash[x]++;
}
int x;
scanf("%d",&x);
printf("%d\n",Hash[x]);
}
return 0;
}
题目1431:Sort
时间限制:1 秒
内存限制:128 兆
特殊判题:否
提交:8762
解决:2866
题目描述:
给你n个整数,请按从大到小的顺序输出其中前m大的数。
输入:
每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。
输出:
对每组测试数据按从大到小的顺序输出前m大的数。
服务端开发/管理
样例输入:
5 3 3 -35 92 213 -644
样例输出:
213 92 3
代码:
#include <stdio.h>
#define OFFSET 500000
int Hash[1000001];
int main(){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
int i;
for(i=-500000;i<=500000;i++){
Hash[i+OFFSET]=0;
}
for(i=0;i<n;i++){
int x;
scanf("%d",&x);
Hash[x+OFFSET]=1;
}
for(i=500000;i>=-500000;i--){
if(Hash[i+OFFSET]==1){
printf("%d",i);
m--;
if(m!=0)printf(" ");
else{
printf("\n");
break;
}
}
}
}
return 0;
}