目录
问题描述
试题编号: | 201312-1 |
试题名称: | 出现次数最多的数 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中最小的一个。 样例输入 6 样例输出 10 |
#include <stdio.h>
#include <string.h>
int main(){
int n,s[10001],i,d;
scanf("%d",&n);
memset(s, 0, sizeof(s));
for(i=0;i<n;i++){
scanf("%d",&d);
s[d]++;
}
int max=0;
int index;
for(i=10000;i>0;i--){
if(max<=s[i]){
max=s[i];
index=i;
}
}
printf("%d\n",index);
return 0;
}
问题描述
试题编号: | 201312-2 |
试题名称: | ISBN号码 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔之后的五位数字代表该书在出版社的编号;最后一位为识别码。 输入格式 输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN号码的格式要求)。 输出格式 输出一行,假如输入的ISBN号码的识别码正确,那么输出“Right”,否则,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”)。 样例输入 0-670-82162-4 样例输出 Right 样例输入 0-670-82162-0 样例输出 0-670-82162-4 |
#include <stdio.h>
#include <string.h>
int main(){
char s[14],c;
int i,sum,j;
while(scanf("%s",&s)!=EOF){
sum=0;
j=1;
for(i=0;i<strlen(s)-1;i++){
if(s[i]!= '-'){
sum+=(j++)*(s[i]-'0');
}
}
//printf("测试sum%d\n",sum);
c=sum%11;
if(c==10){
c='X';
}
else
c=c+'0';
//printf("测试%c\n",c);
if(c==s[strlen(s)-1]){
printf("Right\n");
}
else
{
for(i=0;i<strlen(s)-2;i++){
printf("%c",s[i]);
}
printf("-%c\n",c);
}
}
return 0;
}
问题描述
试题编号: | 201312-3 |
试题名称: | 最大的矩形 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个矩形的高度是hi。这n个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是3, 1, 6, 5, 2, 3。 输入格式 第一行包含一个整数n,即矩形的数量(1 ≤ n ≤ 1000)。 输出格式 输出一行,包含一个整数,即给定直方图内的最大矩形的面积。 样例输入 6 样例输出 10 |
#include <stdio.h>
#include <string.h>
int main(){
int n,i,j,height;
int a[1001];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
int ans=0,area=0;
for(i=0;i<n;i++){
height=a[i];
for(j=i;j<n;j++){
if(height>a[j]){
height=a[j];
}
ans=height*(j-i+1);
if(area<ans){
area=ans;
}
}
}
printf("%d\n",area);
return 0;
}
问题描述
试题编号: | 202009-1 |
试题名称: | 称检测点查询 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 题目背景 2020 年 6 月 8 日,国务院联防联控机制发布《关于加快推进新冠病毒核酸检测的实施意见》,提出对“密切接触者”等八类重点人群“应检尽检”,其他人群“愿检尽检”。 问题描述 某市设有 n 个核酸检测点,编号从 1 到 n,其中 i 号检测点的位置可以表示为一个平面整数坐标 (xi,yi)。 为方便预约核酸检测,请根据市民所在位置 (X,Y),查询距其最近的三个检测点。 输入格式 输入共 n+1 行。 第一行包含用空格分隔的三个整数 n、X 和 Y,表示检测点总数和市民所在位置。 第二行到第 n+1 行依次输入 n 个检测点的坐标。第 i+1 行(1≤i≤n)包含用空格分隔的两个整数 xi 和 yi,表示 i 号检测点所在位置。 输出格式 输出共三行,按距离从近到远,依次输出距离该市民最近的三个检测点编号。 样例输入1 Data 样例输出1 Data 样例输入2 Data 样例输出2 Data 样例2解释 评测用例规模与约定 全部的测试点满足,3≤n≤200,所有坐标均为整数且绝对值不超过 1000。 提示 市民到第 i 号检测点的距离 Di 可由如下公式算出: |
#include <stdio.h>
#include <string.h>
struct distance{
int num;
int x;
int y;
int far;
}d[100005],temp;
int main()
{
int n,i,num=0,j,x,y;
memset(d,0,sizeof(struct distance)*100005);
scanf("%d %d %d",&n,&x,&y);
for(i=0;i<n;i++){
scanf("%d %d",&d[i].x,&d[i].y);
d[i].num=i+1;
d[i].far=(d[i].x-x)*(d[i].x-x)+(d[i].y-y)*(d[i].y-y);
}
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(d[j].far>d[j+1].far){
temp=d[j];
d[j]=d[j+1];
d[j+1]=temp;
}
}
}
for(i=0;i<3;i++){
printf("%d\n",d[i].num);
}
return 0;
}
问题描述
试题编号: | 202009-2 |
试题名称: | 风险人群筛查 |
时间限制: | 1.0s |
内存限制: | 256.0MB |
问题描述: | 题目背景 某地疫情爆发后,出于“应检尽检”的原则,我们想要通知所有近期经过该高危区域的居民参与核酸检测。 问题描述 想要找出经过高危区域的居民,分析位置记录是一种简单有效的方法。 具体来说,一位居民的位置记录包含 t 个平面坐标 (x1,y1),(x2,y2),⋯,(xt,yt),其中 (xi,yi) 表示该居民 i 时刻所在位置。 考虑某位居民的位置记录,如果其中某个坐标位于矩形内(含边界),则说明该居民经过高危区域;进一步地,如果其中连续 k 个或更多坐标均位于矩形内(含边界),则认为该居民曾在高危区域逗留。需要注意的是,判定经过和逗留时我们只关心位置记录中的 t 个坐标,而无需考虑该居民在 i 到 i+1 时刻之间位于何处。 给定高危区域的范围和 n 位居民过去 t 个时刻的位置记录,试统计其中经过高危区域的人数和曾在高危区域逗留的人数。 输入格式 输入共 n+1 行。 第一行包含用空格分隔的七个整数 n、k、t、xl、yd、xr 和 yu,含义如上文所述。 接下来 n 行,每行包含用空格分隔的 2t 个整数,按顺序表示一位居民过去 t 个时刻的位置记录 (x1,y1),(x2,y2),⋯,(xt,yt)。 输出格式 输出共两行,每行一个整数,分别表示经过高危区域的人数和曾在高危区域逗留的人数。 样例输入1 Data 样例输出1 Data 样例1说明 如下图红色标记所示,前三条位置记录经过了高危区域; 样例输入2 Data 样例输出2 Data 样例2说明 该位置记录经过了高危区域,但最多只有连续两个时刻位于其中,不满足逗留条件。 评测用例规模与约定 全部的测试点满足 1≤n≤20,1≤k≤t≤103,所有坐标均为整数且绝对值不超过 106。 |
#include <stdio.h>
#include <string.h>
int main()
{
int n,k,t,xl,yd,xr,yu,i,j;
int xx,yy;
int through=0,in=0;
scanf("%d %d %d %d %d %d %d",&n,&k,&t,&xl,&yd,&xr,&yu);
for(i=0;i<n;i++){
int flag1=0,flag2=0;
int cnt=0;
for(j=0;j<t;j++){
scanf("%d %d",&xx,&yy);
if(xx<xl||xx>xr||yy>yu||yy<yd){
cnt=0;
}
else{
if(flag1==0){
flag1=1;
}
if(flag2==0){
cnt++;
if(cnt==k){
flag2=1;
}
}
}
}
if(flag1==1){
through++;
}
if(flag2==1){
in++;
}
}
printf("%d\n%d\n",through,in);
return 0;
}
问题描述
试题编号: | 202006-1 |
试题名称: | 线性分类器 |
时间限制: | 1.0s |
内存限制: | 512.0MB |
问题描述: | |
#include <stdio.h>
#include <string.h>
typedef struct{
int x;
int y;
char alpha;
}node;
int main()
{
int n,m,i,a,b,c,j,index1,index2,flag1,flag2;
node s[1005];
scanf("%d %d",&n,&m);
for(i=0;i<n;i++){
scanf("%d %d",&s[i].x,&s[i].y);
getchar();
scanf("%c",&s[i].alpha);
}
// for(i=0;i<n;i++){
// printf("iiiii%d %d\n",s[i].x,s[i].y);
// printf("iiiii%c\n",s[i].alpha);
// }
for(i=0;i<m;i++){
index1=0,index2=0,flag1=0,flag2=0;
scanf("%d %d %d",&a,&b,&c);
for(j=0;j<n;j++){
if(s[j].alpha=='A'){
index1++;
if((s[j].x*b+s[j].y*c+a)>=0){
flag1++;
}
}
if(s[j].alpha=='B'){
index2++;
if((s[j].x*b+s[j].y*c+a)<0){
flag2++;
}
}
}
//printf("ceshi===%d %d %d %d\n",index1,index2,flag1,flag2);
if((flag1!=index1&&flag1!=0)||(flag2!=index2&&flag2!=0)){
printf("No\n");
}
else{
printf("Yes\n");
}
}
return 0;
}
问题描述
试题编号: | 201909-2 | ||||||||||
试题名称: | 小明种苹果(续) | ||||||||||
时间限制: | 1.0s | ||||||||||
内存限制: | 512.0MB | ||||||||||
问题描述: |
问题描述
|