void solve(); int main() { solve(); return 0; } ////////////////////////////////////////////////// ////////////////////////////////////////////////// #include #include #include #include #include #include #include using namespace std; typedef pair pii; //分割数求める //和S以下、n分割、M剰余 //保存用空vector指定 //もうめんどくさいから全部long intで(適当) void divisionNumber(long int S, long int n, long int M,vector& v) { v.resize(S+1); for (int n = 0; n <= S; n++)v[n] = 0; v[0] = 1; for (int i = 1; i <= n; i++) { //i分割 for (int j = 0; j <= S; j++) { //和j if (j - i >= 0)v[j] += v[j - i]; if (v[j] >= M)v[j] -= M; } } return; } long int N, S, K; long int M; void solve() { cin >> N >> S >> K; M = 1000000000 + 7; vector v; if (S - (N - 1)*N*K / 2 < 0) { cout << 0 << endl; return; } divisionNumber(S - (N - 1)*N*K / 2, N, M, v); cout << v[S - (N - 1)*N*K / 2] << endl; return; }