#include #include #include #include #include #include #include #include #include #include #include #include //INT_MIN/MAX using namespace std; #define FOR(i,s,e) for(int (i)=(s);(i)<(e);(i)++) #define FORR(i,s,e) for(int (i)=(s);(i)>(e);(i)--) #define MOD 1000000007 #define llong long long #define debug(x) cout<<#x<<": "<> n >> s >> k; int dp[101][20011] = { 0 }; for (int i = 0; i < 20010; i += n) { dp[0][i] = 1; } FOR(i, 0, n - 1) { FOR(j, 0, s + 1) { if (0 <= j - k*(n - 1 - i)) dp[i + 1][j] += dp[i][j - k*(n - 1 - i)]; if (0 <= j - (n - 1 - i)) dp[i + 1][j] += dp[i + 1][j - (n - 1 - i)]; dp[i + 1][j] %= MOD; } } cout << dp[n - 1][s] << endl; return 0; }