第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)

题解目录

  • 第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)
  • (1)枚举
  • (2)枚举+多级判定
  • (3)阶乘计算(可多方法)
  • (4)上台阶问题dfs
  • (5)三层循环枚举
  • (6)速度计算
  • (7)棋盘颜色问题
  • (8)(9)(10)下次更新


(1)枚举

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第1张图片


#include 
#include 
int main() {
	int i=1000,n=9999,sum=0;
	for(;i<=9999;i++){
		if(i%128 == 0){
			sum++;
		} 
	}
	printf("%d",sum);
	return 0;
}

(2)枚举+多级判定

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第2张图片


#include 
#include 
int main() {
	int i=1000,n=9999,sum=0;
	for(;i<=n;i++){
		if((i/1000 == i/10%10) && (i/100%10 == i%10-1) ){
			sum++;
		}
	}
	printf("%d",sum);
	return 0;
}

(3)阶乘计算(可多方法)

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第3张图片


#include 
#include 
int fun(int n){
	if(n==1){
		return 1;
	}
	return fun(n-1)*n;
} 
int main() {
	int i=1000,n=9999,sum=0;
	for(i=1;i<=21;i++){
		if(i%2 == 0){
			sum++;
		} 
	}
	printf("%d",sum);
	printf("\n阶乘是:%d",fun(sum));
	return 0;
}

(4)上台阶问题dfs

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第4张图片


#include 
#include 

int max = 0;
int T[16] = {0,1,2,1,1,1,1,5,5,4,-1,-1,-2,-3,-1,-9};

void fun(int i,int x,int sum){//i为第步数,x为台阶数,sum为得分
	if(i>=7){//超过最新的步数 结束函数 
		return;
	}
	if(x == 15){//到达15层 判定满足条件的分数 并且赋值 
		max = sum>max?sum:max;
		return; 
	}
	int j=0;
	for(j=1;j<=4;j++){
		fun(i+1,x+j,sum +=T[x+j]);
	}	
} 
int main() {
	fun(1,0,0);
	printf("%d",max);
	return 0;
}

(5)三层循环枚举

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第5张图片

#include 
#include 
int main() {
	int a[20] = {2,9,17,4,14,10,25,26,11,14,16,17,14,21,16,27,32,20,26,36};
	int i,j,k,sum=0;
	for(i=0;i<18;i++){
		for(j=i+1;j<19;j++){
			for(k=j+1;k<20;k++){
				if(a[i]<a[j] && a[j]<a[k]){
					sum++;
				}
			}
		}
	}
	printf("%d",sum);
	return 0;
}

(6)速度计算

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第6张图片


#include 
#include 
int main() {
	int t=0,v=0;
	scanf("%d%d",&t,&v);
	printf("%d",t*v);
	return 0;
}

(7)棋盘颜色问题

第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第7张图片
第十三届蓝桥杯模拟赛(第一期)题解-代码详解(C语言)_第8张图片
观察可以知道奇数行对应的奇数列就是黑色块,偶数行对应的偶数列就是黑色的

#include 
#include 

int main() {
	int n=0,m=0,i=1,j=1,sum=0;
	scanf("%d%d",&n,&m);
//	printf("n=%dm=%d\n",n,m);
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			if(i%2 != 0 && j%2 != 0){
//				printf("ji:%d,%d\n",i,j); 
				sum++;
			}else if(i%2 == 0 && j%2 == 0){
//				printf("ou:%d,%d\n",i,j); 
				sum++; 
			}	
		}
	}
	printf("%d",sum);
	return 0;
}

(8)(9)(10)下次更新

你可能感兴趣的:(CSP-J算法,蓝桥杯,c语言,算法)