https://www.luogu.org/problem/P1011
车上人数 上车人数
a a
a y
2a a+y
2a+y a+2y
3a+2y 2a+3y
4*** 3a+5y
6a+7y 5a+8y
9a+12y 8a+13y
14a+20y 13a+21y
22a+33y 21a+34y
4***=32 y=3
code:
#include<cstdio>
using namespace std;
double now[10005];
double shang[10005];
int main()
{
double a,m;
int n,x;
scanf("%lf%d%lf%d",&a,&n,&m,&x);
now[1]=1;
now[2]=1;
now[3]=2;
for(int i=4;i<n;i++)
{
now[i]=now[i-1]+now[i-2]-1;
shang[i]=shang[i-1]+shang[i-2]+1;//结果发现车上人数是前两次的和-1;上车人数是前两次的和+1;
}
double y=(m-now[n-1]*a)/shang[n-1];
printf("%d\n",(int)(now[x]*a+shang[x]*y));
return 0;
}