ACM新生赛部分题解


前言

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.题目描述。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

十、雨伞会坏吗?

1.题目描述。

在这里插入图片描述

十一、Time Management。

1.题目描述。

在这里插入图片描述

十二、小布特烦恼。

1.题目描述。

在这里插入图片描述

十三、水题。

1.题目描述。

在这里插入图片描述

总结

猜你喜欢

转载自blog.csdn.net/qq_52208569/article/details/111491652