省赛选拔之愚人节专题

点击打开链接

明天就愚人了,学长在开玩笑啊


A


#include"stdio.h"
#include"string.h"
#include"stdlib.h"
struct node
{
	int a;
}aa[100001];
int cmp(const void*a,const void*b)
{
	return (*(struct node*)b).a-(*(struct node*)a).a;
}
int main()
{
	int n,m,i;
	while(scanf("%d%d",&n,&m)!=-1)
	{
		if(n==0&&m==0)break;
		for(i=0;i<n;i++)
			scanf("%d",&aa[i].a);
		qsort(aa,n,sizeof(aa[0]),cmp);
		if(m>n)m=n;
		for(i=0;i<m-1;i++)
			printf("%d ",aa[i].a);
		printf("%d\n",aa[i]);
	}
	return 0;
}




B


#include"stdio.h"
int main()
{
	char s,ss;
	int ans;
	int i,n;
	scanf("%d",&n);
	ans=0;
	getchar();
	scanf("%c",&s);
	for(i=1;i<n;i++)
	{
		scanf("%c",&ss);
		if(ss==s)ans++;
		s=ss;
	}
	printf("%d\n",ans);
	return 0;
}



C

#include"stdio.h"
int main()
{
	int n,ans,i;
	char str[5];
	scanf("%d",&n);
	getchar();
	ans=0;
	for(i=0;i<n;i++)
	{
		gets(str);
		if(str[0]=='X')
		{
			if(str[1]=='-')ans--;
			else if(str[1]=='+')ans++;
		}
		else if(str[0]=='+')ans++;
		else if(str[0]=='-')ans--;
	}
	printf("%d\n",ans);
	return 0;
}


D

水,唯一的一个难点是文件输入输出!

#include"stdio.h"
int main()
{
	freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
	char s,ss;
	int n,m,i,j;
	scanf("%d%d",&n,&m);
	i=j=0;
	if(n<=m)
	{
		s='G';ss='B';
	}
	else
	{
		s='B';ss='G';
	}
	while(i<n&&j<m)
	{
		printf("%c%c",s,ss);
		i++;j++;
	}
	while(i<n)
	{
		printf("B");i++;
	}
	while(j<m)
	{
		printf("G");j++;
	}
	printf("\n");
	return 0;
}


E

#include"stdio.h"
int main()
{
	int n,k,t,i;
	char str[51];
	scanf("%d%d",&n,&k);
	getchar();
	gets(str);
	t=0;
	while(k>0)
	{
		k--;
		for(i=0;str[i];i++)
		{
			if(str[i]=='B'&&str[i+1]=='G')
			{
				str[i]='G';str[i+1]='B';i++;
			}
		}
	}
	puts(str);
	return 0;
}

F

学长在开玩笑啊,

这题看起来有点难,刚开始没明白题目意思,后来才发现是对字符串中的任意两个字符进行异或运算和或运算,然后用得到的两个结果替换原来的两个字符。

很明显:

11-----01或10

01-----11

10-----11

00-----00;

很明显可以把11,01,10转换成11,10,01,00;

即:只要有1就可以转换成任意的01组合;

所以只需判断两个字符串中是否有1就可以了;

注意在判断之前需要判断两个字符串的长短是否相同。。。

#include"stdio.h"
#include"string.h"
char a[1000001];
char b[1000001];
int main()
{
	int n,m,i;
    scanf("%s",a);
    scanf("%s",b);
    n = strlen(a); 
	m = strlen(b);

    if (n != m) 
		printf("NO\n");	
	else
	{
		int x,t;
		x=t=0;
		for(i=0;i<n;i++)
			if(a[i]=='1')x=1;
			
		for(i=0;i<m;i++)
			if(b[i]=='1')t=1;
		
		if((x==1&&t==1)||(x==0&&t==0))printf("YES\n");
			else printf("NO\n");
	}
	return 0;
}


原文地址:https://www.cnblogs.com/yyf573462811/p/6365137.html