解题思路:
根据题目:

        x站后车上的人数 = (x-1)站后车上的人数 + x 站上车人数 - x站下车人数

构造三个函数:

int shangche(int a,int n,int dier,int x);
int xiache(int a,int n,int dier,int x);
int zaicheshang(int a,int n,int dier,int x);

注意事项:


此题的关键点,在于不知道第二站上下车的人数

但是知道了最后一站下车的人数是 m

所以需要根据 m 的值,计算出 第二站上下的人数


参考代码:

#include <stdio.h>

int shangche(int a,int n,int dier,int x);
int xiache(int a,int n,int dier,int x);
int zaicheshang(int a,int n,int dier,int x);

int main(void){
	int a,n,m,x;
	scanf("%d%d%d%d",&a,&n,&m,&x);
	int i;        //用 i 表示 第二站上车的人数
	for(i = 1;;i++){
		if(m == zaicheshang(a,n,i,n-1)) {
			printf("%d",zaicheshang(a,n,i,x));
		}else if( m < zaicheshang(a,n,i,n-1) ) {
		        break;
		}
	}
	return 0;
}

int xiache(int a,int n,int dier,int x){
	int xia;
	if(x > 2 && x < n){
		xia = shangche(a,n,dier,x-1);
	}else if(x == 2){
		xia = dier;
	}else if(x == 1){
		xia = 0;
	}if(x == n) xia = zaicheshang(a,n,dier,x-1);
	return xia;
}

int shangche(int a,int n,int dier,int x){
	int shang;
	if(x >2 && x<n){
		shang = shangche(a,n,dier,x-1) + shangche(a,n,dier,x-2);
	}else if(x == 2){
		shang = dier;
	}else if(x == 1){
		shang = a;
	}else if(x == n){
		shang = 0;
	}
	return shang;
}

int zaicheshang(int a,int n,int dier,int x){
	int sum;
	if(x == 1) sum = a;
	else if(x <= n){
		sum = zaicheshang(a,n,dier,x-1) + shangche(a,n,dier,x) - xiache(a,n,dier,x);
	}
	return sum;
}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论