欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > 第二届新生程序设计竞赛热身赛(C语言)

第二届新生程序设计竞赛热身赛(C语言)

2024/12/24 11:28:24 来源:https://blog.csdn.net/weixin_73947887/article/details/143417305  浏览:    关键词:第二届新生程序设计竞赛热身赛(C语言)

A:饥饿的XP

XP迷失在X星球,他醒来时已经很久很久很久没有吃过东西了。他突然发现身边有一张地图,上面有X星球上每一个食物供给点的位置。太好了,XP跳了起来。他决定先把肚子填饱再去寻找其他伙伴。现在已知XP的位置(X, Y),以及他的行走速度N(米/分钟),请问他需要多久才能到达最近的食物供给点。

输入

第一行两个正整数N和M,N为XP的行走速度,M为X星球上食物供给点的数量。
第二行两个小数X和Y,表示XP的坐标。
接下来M行,每一行包含两个小数,表示每一个供给点的坐标。
地图中的距离单位为:米。(N,M都为正整数)
-1000<=X,Y<=1000,0<M,N<=500

输出

所需时间(单位为分钟,需保留两位小数)。

样例输入 Copy
1 1
0 0
1.0 0
样例输出 Copy
1.00
#include <stdio.h>
#include <math.h>
double a[505];
void sort(double a[],int n) {for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (a[j] > a[j + 1]) {double t = a[j];a[j] = a[j + 1];a[j + 1] = t;}}}
}
int main() {int n, m;double x, y;while (~scanf("%d%d%lf%lf",&n,&m,&x,&y)) {double xx, yy;for (int i = 0; i < m; i++) {scanf("%lf%lf", &xx, &yy);a[i] = sqrt((x - xx) * (x - xx) + (y - yy) * (y - yy));}sort(a, m);printf("%.2lf\n", a[0] / n);}return 0;
}

 B:XP的众数(题目数据有问题,1e5双重for循环能过)

XP想求一个整数数组的众数,即出现次数最多的数。但是有时候一个数组的众数不唯一,因此他希望知道数组中众数的个数。你能不能写个程序帮帮他呢?

输入

每排先输入一个n,表示该组共n个数,随后跟着n个数,表示该数组的每个元素的值
保证每个输入的值x在int范围内且(0 <=n <= 1e5)

输出

每排输出一个整数,表示该组数组的众数个数

样例输入 Copy
7 1 2 3 4 2 3 4
样例输出 Copy
3
#include <stdio.h>
int a[100005];
int main() {int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){scanf("%d",&a[i]);}for(int i=0;i<n-1;i++){int t=i;for(int j=i+1;j<n;j++){if(a[t]>a[j]){t=j;}}if(t!=i){int tt=a[i];a[i]=a[t];a[t]=tt;}}int m=0,s=0;for(int i=0;i<n;i++){int j=i;while(j<n-1&&a[j]==a[j+1]){j++;}if(m==j-i+1){s++;}if(m<j-i+1){m=j-i+1;s=1;}i=j;}printf("%d\n",s);}return 0;
}

C:ZWH的疑惑

有n个数字,a1,a2.....an,bi=(2^ai)%2147483648,输出所有的b的和 。

输入

首先输入t代表样例数量。

后面每两行代表每一个样例 。

第一行输入一个整数n 。

第二行输入n个整数,代表每一个ai 。

输出

所有b的和 。

数据范围   (1<=t<=500  1<=n<=500  1<=ai<=10000000000 )

样例输入 Copy

1
3
1 2 3
样例输出 Copy
14
#include <stdio.h>
#include <math.h>
long long a[505];
int main() {int t, n;scanf("%d", &t);while (t--) {long long s = 0;scanf("%d", &n);for (int i = 0; i < n; i++)scanf("%lld", &a[i]);for (int i = 0; i < n; i++)if (a[i] < 31)s += (long long)pow(2, a[i]);printf("%lld\n", s);}return 0;
}

 D:yangftc的时间安排

yangftc需要安排他的时间,有很多事情做,每个事情都有固定的开始和结束时间,因为yangftc每次只能做一件事情,如果有两个或者多个事情的时间重合了那么他就会说  NO,否则他就会说 YES 。

输入

第一个数字t代表样例数量,

后面t个样例,每个样例输入一个n表示事情的数量,后面n行每行两个数字l r表示这个事情的开始和结束时间;

输出

判断yangftc会说什么 YES或者 NO 。

数据范围  1<=t<=500  1<=n<=100  1<=l<=r<=100000

样例输入 Copy
2
3
1 3
4 5
6 7
2
1 3
3 4
样例输出 Copy
YES
NO
#include <stdio.h>
#include <math.h>
int a[100005];
int main() {int t,n;scanf("%d",&t);while(t--){scanf("%d",&n);for(int i=0;i<100005;i++){a[i]=0;}int l,r;int f=1;while(n--){scanf("%d%d",&l,&r);for(int i=l;i<=r;i++){if(a[i]){f=0;}a[i]=1;}}if(f){printf("YES\n");}else{printf("NO\n");}} return 0;
}

 E:小明同学的签到题

小明同学热爱ACM,因此他每天清晨都会默念N遍HNUCM,并打开HUNCM OJ刷题,现在他要求你打印N个HNUCM字符串。

输入

有多组样例,每行输入一个正整数N(N<=100)

输出

每组数据你只需要输出N个字符串HNUCM即可,每行一个HNUCM。
每组数据后需接一行空行

样例输入 Copy
4
5
样例输出 Copy
HNUCM
HNUCM
HNUCM
HNUCMHNUCM
HNUCM
HNUCM
HNUCM
HNUCM
#include <stdio.h>
#include <math.h>
int main(){int n;while(scanf("%d",&n)!=EOF){for(int i=0;i<n;i++){printf("HNUCM\n");}printf("\n");} return 0;
}

 F:Yftc的宝石

Yftc来到了一个魔法之城,这个城的城主给了Yftc n片宝石碎片,每片碎片价值ai。

Yftc需要把n颗碎片合并成一颗完整的宝石。每次yftc可以选择相邻的两片合并成一片,合并后这一整块的碎片价值将变为0,并且Yftc获得的价值为两片碎片中价值较大者。

请问,将所有碎片合并成一颗宝石后,Yftc能获得的最大价值。

输入

多组输入,每组输入两行。

第一行,1个整数n(1<=n<=1000) 。

第二行n个整数,代表每片碎片价值ai(1<=ai<=10000) 。

输出

Yftc能够获得的最大价值 。

样例输入 Copy

3
1 2 3
样例输出 Copy
5
#include <stdio.h>
#include <math.h>
int a[1000];
int main(){int n;while(scanf("%d",&n)!=EOF){int s=0,b=10000;for(int i=0;i<n;i++){scanf("%d",&a[i]);s+=a[i];if(b>a[i]){b=a[i];}}printf("%d\n",s-b);} return 0;
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com