#include<iostream>
#include<stdio.h>
using namespace std;
int f[25],n,x,a,b,m,sum,f_up[25],f_down[25],f_cup[25];
//5 x 5+x 10+x 15+2x 35+3x
//1 2 3 4 5 6 7
//a+0x 0a+x a+x a+2x 2a+3x 3a+5x 5a+8x
//0 0a+x 0a+x a+x a+2x 2a+3x 3a+5x
//a+0x 0 a+0x 0a+x a+x a+2x 2a+3x
//m = (a+fib(n-1-4)*a+fib(n-1-3)*x)*(n-1)/2=>m=(a+(fib(n-5)*a+fib(n-4)*x))*(n-1)/2=>2m/(n-1) = (a+(fib(n-5)*a+fib(n-4)*x))=> (2m/(n-1) -(fib(n-5)+1) * a)/fib(n-4) = x
// long long fib(long long a)//斐波那契递归函数
// {
// if (a == 1 || a == 2)
// {
// return 1;
// }
// else
// {
// return fib(a - 1) + fib(a - 2);
// }
// }
// void up(int a,int n,int m)
// {
// int b =
// }
int main()
{
//freopen("P1011.in","r",stdin);
//freopen("P1011.ans","w",stdout);
cin >> a >> n >> m >> x;
//b = ((2 * m)/(n-1) - (fib(n-5)+1)*a)/fib(n-4);
f_cup[n-1] = -m;f_up[n-1] = 0;f_down[n-1] = m;f_down[0] = 0;f_up[0] = a;f_cup[0] = a;
for(int i = 1;i<=1000;i++)
{
sum = 0;
f_up[1] = i;f_down[1] = i;f_cup[1] = f_up[1]-f_down[1];
for(int j = 2;j<n-1;j++)
{
f_up[j] = f_up[j-1] + f_up[j-2];
f_down[j] = f_up[j-1];
f_cup[j] = f_up[j] - f_down[j];
}
for(int j = 0;j<n-1;j++)
{
sum+=f_cup[j];
}
if(m == sum)
{
//cout << i << endl;
break;
}
}
// for(int i = 0;i<n;i++)
// {
// cout << f_up[i] << " " << f_down[i] << " " << f_cup[i] << endl;
// }
for(int i = 0;i<x;i++)
{
// cout << f_cup[i] << endl;
b += f_cup[i];
}
cout << b;
//fclose(stdin);
//fclose(stdout);
return 0;
}
求调谢谢