水题。
题目描述有坑,可以先根据样例手算试一试
//Serene
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=50;
int f[50],a,n,m,p,q,x;int main() {f[1]=f[2]=1;for(int i=3;i<=20;++i) f[i]=f[i-1]+f[i-2];scanf("%d%d%d%d",&a,&n,&m,&x);if(x<3) printf("%d",a);else {if(n!=2) {p=f[n-3];q=f[n-2];m-=a*(p+1);m/=(q-1);}else m-=a;printf("%d",a*f[x-2]+m*f[x-1]+a-m);}return 0;
}