解题思路: 设第二站的上车人数为x,通过列表个的方法找出x的系数和常数项,通过两个二维数组来记录每一站的上车人数和发车人数,求出关于倒数第二站的方程, 解方程获得第二站的上车人数
列如 : 题目样例中 a = 5 n = 7 m = 32 x= 4
第一站 第二站 第三站 第四站 第五站 第六站
发车人数(numArr) 5 5 10 10+x 15+2x 4x+20
上车人数(upArr) 5 x 5+x 2x+5 10+3x 5x+15
解方程,4x+20 = 32
x = 3
求得第四站发车的人数为13
参考代码:
import java.util.Scanner;
public class test1179 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int n = sc.nextInt();
int m = sc.nextInt();
int x = sc.nextInt();
// 定义一个二维数组用来记录每一站发出时的总人数
int[][] numArr = new int[n][2];
// 定义一个二维数组用来记录每一站的上车人数
int[][] upArr = new int[n][2];
// 记录前两站的状态,因为前两站比较特殊
numArr[0][0] = a;
numArr[0][1] = 0;
numArr[1][0] = a;
numArr[1][1] = 0;
upArr[0][0] = a;
upArr[0][1] = 0;
upArr[1][0] = 0;
upArr[1][1] = 1;
for (int i = 2; i < n; i++) {
numArr[i][0] = numArr[i - 1][0] + upArr[i - 2][0];
numArr[i][1] = numArr[i - 1][1] + upArr[i - 2][1];
upArr[i][0] = upArr[i - 1][0] + upArr[i - 2][0];
upArr[i][1] = upArr[i - 1][1] + upArr[i - 2][1];
}
// 用来记录第二站的上车人数
int temp = (m - numArr[n - 2][0])/numArr[n - 2][1];
int num = numArr[x - 1][0] + numArr[x - 1][1] * temp;
System.out.println(num);
}
}0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复