#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
#define MAXN 10005
#define LL long long
#define MOD 100000007
using namespace std;
int a,n,m,x,b[25],c[25]; // b数组:总人数 c数组:上了多少人
int work(int x) //求第二站上了多少人
{
int bb[25],cc[25];
bb[1]=a;bb[2]=a;cc[1]=a; // bb cc 数组为临时的b c数组 与b c数组功能相同
cc[2]=x;
for(int i=3;i<n;i++)
{
bb[i]=bb[i-1]+cc[i-2];
cc[i]=cc[i-2]+cc[i-1];
}
if(bb[n-1]==m)
return 1;
return 0;
}
int main()
{
scanf("%d%d%d%d",&a,&n,&m,&x);
b[1]=a;b[2]=a;c[1]=a;
for(int i=0;;i++) // i 其实可以有循环的右边界 不过不会死循环
if(work(i)==1)
{
c[2]=i;
break;
}
if(x==m)// 特判一下 不知道有没有用
{
printf("0");
return 0;
}
if(x==1||x==2) // 特判一下
{
printf("%d",a);
return 0;
}
for(int i=3;i<n;i++) // 模拟部分
{
b[i]=b[i-1]+c[i-2];
c[i]=c[i-2]+c[i-1];
}
printf("%d",b[x]);
return 0;
}
3 3 条评论收起
883

被折叠的 条评论
为什么被折叠?



