由于计算机不能识别方程,故而这题的关键点在与模拟出系数,进而求得参数的值,最终求得结果。
#include <iostream>
using namespace std;
struct node{
int c, d; // a,b的系数
} in[30], out[30], peo[30];
int a, b, n, m, x, x1; // b为第二个车站的上车人数
void init() {
in[1].c = 1, in[1].d = 0;
out[1].c = 0, out[1].d = 0;
peo[1].c = 1, peo[1].d = 0;
in[2].c = 0, in[2].d = 1;
out[2].c = 0, out[2].d = 1;
peo[2].c = 1, peo[2].d = 0;
}
int main() {
cin >> a >> n >> m >> x;
init();
for (int i = 3; i <= (n-1); i++) {
in[i].c = in[i-2].c + in[i-1].c;
in[i].d = in[i-2].d + in[i-1].d;
out[i].c = in[i-1].c;
out[i].d = in[i-1].d;
peo[i].c = peo[i-1].c + in[i].c - out[i].c;
peo[i].d = peo[i-1].d + in[i].d - out[i].d;
}
// 最终下车的人数为a,b的函数,只需求出a,b的系数,即可解得b的值
b = (m - peo[n-1].c * a) / peo[n-1].d;
int ans = peo[x].c * a + peo[x].d * b;
cout << ans;
return 0;
}