ACM新生赛部分题解
文章目录
- 前言
- 一、永远的聪明王。
- 1.题目描述。
- 2.代码如下:
- 2.总结。
- 二、菜学长的糖糖。
- 1.题目描述。
- 2.代码如下:
- 3.总结。
- 三、小植哥哥的好奇。
- 1.题目描述。
- 2.代码如下:
- 3.总结。
- 四、小温学长大冒险。
- 1.题目描述。
- 五、矩阵求和。
- 1.题目描述。
- 六、激光武器。
- 1.题目描述。
- 七、激光武器。
- 1.题目描述。
- 八、桃花侠大战菊花怪。
- 1.题目描述。
- 九、超级Chtholly。
- 1.题目描述。
- 十、雨伞会坏吗?
- 1.题目描述。
- 十一、Time Management。
- 1.题目描述。
- 十二、小布特烦恼。
- 1.题目描述。
- 十三、水题。
- 1.题目描述。
- 总结
前言
ACM新生赛总结与感悟。
一、永远的聪明王。
1.题目描述。
2.代码如下:
(示例):
#include<stdio.h>
#include<stdlib.h>
struct Node//定义结构体,存放字符串和分数
{
char a[100];
int score;
};
int cmp(const void *a,const void *b)
{
struct Node *p1 =(struct Node*)a;//强制类型转化
struct Node *p2 =(struct Node*)b;
return ((p1->score)>(p2->score)?1:-1);//比较分数
}
int main(void)
{
int n;
scanf("%d",&n);
struct Node *arr;//定义结构体指针
arr = (struct Node*)malloc(n*sizeof(struct Node));//为结构体指针申请内存空间
int i;
for(i=0;i<n;i++)//填充内容
{
scanf("%s %d",&arr[i].a,&arr[i].score);
}
qsort(arr,n,sizeof(arr[0]),cmp);//使用qsort函数对结构体分数进行排序
for(i=0;i<n;i++)
printf("%s ",arr[i].a);
return 0;
}
2.总结。
冒泡在ACM比赛中用不到,在比赛中首先应想到qsort函数。
一种方法不行换另一种,多试试。
二、菜学长的糖糖。
1.题目描述。
2.代码如下:
(示例):
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int n;
scanf("%d",&n);
int *a;
a = (int*)malloc(n*sizeof(int));
int i;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int b = a[0];
for(i=1;i<n;i++)
{
b = b^a[i];
}
printf("%d",b);
return 0;
}
3.总结。
按位运算符的使用,按照异或运算符的交换律,相同数字异或答案为0,将所有数字异或起来输出即可。
三、小植哥哥的好奇。
1.题目描述。
2.代码如下:
(示例):
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
long n;
scanf("%ld",&n);
int *a;
a = (int*)malloc((n+1)*sizeof(int));
int i,j;
for(i=0;i<=n;i++)
a[i] = 0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j%i==0)
a[j]++;
}
}
for(i=1;i<=n;i++)
if(a[i]&1==1)
printf("%d ",i);
return 0;
}
3.总结。
给定一个数组数组中每一个元素赋初始值为0,操作一次就给给数组中对应的数加一,最后操作次数为奇数的表示站起来,输出即可。
四、小温学长大冒险。
1.题目描述。
五、矩阵求和。
1.题目描述。
六、激光武器。
1.题目描述。
七、激光武器。
1.题目描述。
八、桃花侠大战菊花怪。
1.题目描述。
九、超级Chtholly。
1.题目描述。
zsj06130675: 队尾函数应该是笔误,改成tail就行了
嘉遇51: 访问队尾函数是不是错了
£އއ昔年:
my威化饼干: 赶紧过来补补课
释怀人生: 文绉绉的程序大佬最帅了!