答案解析(C语言版本)——第五届“传智杯”全国大学生计算机大赛(练习赛)

目录

A [传智杯 #5 练习赛] 复读

输入输出样例 

输入 #1

输出 #1 

代码解析如下

B [传智杯 #5 练习赛] 时钟

输入输出样例

输入 #1

输出 #1

输入 #2

输出 #2

输入 #3

输出 #3

代码解析如下

C [传智杯 #5 练习赛] 平等的交易

输入输出样例

 输入 #1

输出 #1

代码解析如下

D [传智杯 #5 练习赛] 清洁工

输入输出样例

输入 #1

输出 #1

输入 #2

输出 #2

输入 #3

输出 #3

输入 #4

输出 #4

代码解析如下


A [传智杯 #5 练习赛] 复读

输入输出样例 

输入 #1

cc
b
a
cc
0

输出 #1 

ccba

代码解析如下

#include<stdio.h>
#include<string.h>
int main() {
	int i,j,flag;
	char arr[500][100],str[50000];
	for(i=0; i<500; i++) {
		scanf("%s",&arr[i]);
		if(strcmp(arr[i],"0")==0) {
			break;
		}
		flag=0;
		for(j=0; j<i; j++) {
			if(strcmp(arr[i],arr[j])==0) {
				flag=1;
				break;
			}
		}
		if(flag==0)
			strcat(str,arr[i]);
	}
	printf("%s",str);
	return 0;
}

B [传智杯 #5 练习赛] 时钟

输入输出样例

输入 #1

120

输出 #1

10

输入 #2

2880

输出 #2

79

输入 #3

987654321

输出 #3

26748975

 

代码解析如下

#include<stdio.h>
int ishao(int shi,int fen) {
	int a,b,c,d,cha,flag=0;
	a=shi/10;
	b=shi%10;
	c=fen/10;
	d=fen%10;
	cha=d-c;
	if(shi>9) {
		if(a+cha==b&&b+cha==c&&c+cha==d)
		{
			flag=1;
		}
	}else{
		if(b+cha==c&&c+cha==d)
		{
			flag=1;
		}
	}
	return flag;
}
int main() {
	//39
	long int n,day;
	int i,count=0;
	scanf("%ld",&n);
	day=n/1440;
	n%=1440;
	if(n==0){
		count++;
	}
	for(i=0; i<n; i++) {
		if(ishao(i/60,i%60)==1){
			count++;
		}
	}
	printf("%d",count+day*39);
	return 0;
}

C [传智杯 #5 练习赛] 平等的交易

 

输入输出样例

 输入 #1

3 
1 1 2
5

输出 #1

2

代码解析如下

#include<stdio.h>
//KuaiPai
int qusort(long int s[],long int start,long int end) {
	long int i,j;
	i=start;
	j = end;
	s[0]=s[start];
	while(i<j) {
		while(i<j&&s[0]<s[j])
			j--;
		if(i<j) {
			s[i]=s[j];
			i++;
		}
		while(i<j&&s[i]<=s[0])
			i++;
		if(i<j) {
			s[j]=s[i];
			j--;
		}
	}
	s[i]=s[0];
	if (start<i)
		qusort(s,start,j-1);
	if (i<end)
		qusort(s,j+1,end);
	return 0;
}
int main() {
	long int n,w,count=0,i,j,t;
	scanf("%ld",&n);
	long int arr[n+1];
	for(i=1; i<=n; i++) {
		scanf("%ld",&arr[i]);
	}
	scanf("%ld",&w);
	qusort(arr,1,n);

	for(i=n; i>0; i--) {
		if(arr[i]<=w) {
			w=arr[i];
			break;
		}
	}

	for(i=1; i<=n; i++) {
		if(arr[i]<=w) {
			w-=arr[i];
			count++;
		} else {
			break;
		}
	}

//	printf("%ld\n",n);
//	for(i=1; i<=n; i++) {
//		printf("%ld ",arr[i]);
//	}
//	printf("\n%ld",w);

	printf("%d",count);
	return 0;
}

D [传智杯 #5 练习赛] 清洁工

输入输出样例

输入 #1

5 4 1 1
NENW

输出 #1

10 10 10 10 10 
10 10 10 10 10 
10 6 10 10 10 
4 4 10 10 10 
6 10 10 10 10 

输入 #2

7 14 1 1
NENENENENESSSS

输出 #2

105 105 105 105 105 105 105 
105 105 105 105 55 61 105 
105 105 105 49 51 69 105 
105 105 51 49 105 79 105 
105 61 55 105 105 91 105 
79 69 105 105 105 105 105 
91 105 105 105 105 105 105 

输入 #3

10 70 2 2
NWSNSNNNSNNSSNNSENNNNEESNWSESESSWENNSEWESWWWESEEESENNSENWNESNWSNNNEESS

输出 #3

2485 2485 2485 2485 2485 2485 2485 2485 2485 2485 
2485 1407 1205 1267 2485 2485 2485 2485 2485 2485 
2485 1435 1281 1167 2485 2485 2485 2217 2281 2347 
2485 1465 2485 1255 1041 2485 2485 2155 2485 2415 
1557 1497 2485 2485 969 1177 2485 1733 1807 2485 
1471 1531 1315 907 935 1267 2485 1473 1647 2485 
1631 2485 2485 1357 1381 1407 1435 1499 1645 2485 
2021 2347 2485 2485 2485 2485 1465 1497 2485 2485 
2087 2415 2485 2485 2485 2485 2485 2485 2485 2485 
2485 2485 2485 2485 2485 2485 2485 2485 2485 2485 

输入 #4

5 4 2 1
NENW

输出 #4

10 10 10 10 10 
10 10 10 10 10 
10 10 6 10 10 
10 4 4 10 10 
10 6 10 10 10 

代码解析如下

#include<stdio.h>
#include<string.h>
int main() {
	int n,m,x,y,i,j,k;
	scanf("%d%d%d%d",&n,&m,&x,&y);
	int arr[n][n];
	int arr1[n][n];
	char str[m];
	x=x-1;
	y=n-y;
	for(i=0; i<n; i++) {
		for(j=0; j<n; j++) {
			arr[i][j]=0;
			arr1[i][j]=0;
		}
	}
	scanf("%s",&str);

	//NENW
	for(k=0; k<m; k++) {
		for(i=0; i<n; i++) {
			for(j=0; j<n; j++) {
				if(i==y&&j==x) {
					arr1[i][j]=0;
				} else {
					arr1[i][j]++;
					arr[i][j]+=arr1[i][j];
				}
			}
		}
		if((str[k]=='N')==1) {
			y--;
		}
		if((str[k]=='S')==1) {
			y++;
		}
		if((str[k]=='W')==1) {
			x--;
		}
		if((str[k]=='E')==1) {
			x++;
		}
	}
//	for(i=0; i<m; i++) {
//		printf("%c ",str[i]);
//	}
//	printf("\n");
	for(i=0; i<n; i++) {
		for(j=0; j<n; j++) {
			printf("%d ",arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

后面两题战略性放弃……

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yao2424022071

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值