#include<iostream> usingnamespace std; longlong n, s, a, b; longlong ans = 0; constint MOD = 1000000007;
voiddfs(int x, int cnt, int sum) { if (cnt == n) { if (sum == s) { ans++; } if (ans > MOD) { ans %= MOD; } return; } dfs(x + a, cnt + 1, sum + x + a); dfs(x - b, cnt + 1, sum + x - b); }
voidslove() { longlong t = n * (n - 1) / 2; longlong x; longlong x1 = s / n - a * (n - 1) / 2; longlong x2 = 1 + s / n + b * (n - 1) / 2; for (int x = x1; x <= x2; x++) { dfs(x, 1, x); } }
intmain() { cin >> n >> s >> a >> b; slove(); cout << ans << endl; }
#include<iostream> usingnamespace std; longlong n, s, a, b; longlong ans = 0; constint MOD = 1000000007; voiddfs(int x, int cnt, int sum) { if (cnt == n) { if (sum == s) { ans++; } if (ans > MOD) { ans %= MOD; } return; } dfs(x + a, cnt + 1, sum + x + a); dfs(x - b, cnt + 1, sum + x - b); }
voidslove() { longlong t = n * (n - 1) / 2; longlong x; longlong x1 = s / n - a * (n - 1) / 2; longlong x2 = 1 + s / n + b * (n - 1) / 2; for (int x = x1; x <= x2; x++) { for (int cntA = 0; cntA <= t; cntA++) { longlong cal = x * n + cntA * a - (t - cntA) * b; if (cal == s) { dfs(x, 1, x); } } } } intMod(int x,int n){ return (x % n + n) % n; }
intmain() { cin >> n >> s >> a >> b; slove(); cout << ans << endl; }