提交时间:2022-07-20 12:02:08

运行 ID: 52829

#include <bits/stdc++.h> using namespace std; const int N = 5005, mod = 1e9 + 7; int n, m, k, c, s[N], ans; long long pw(long long a, long long b) { long long re = a; for(int i = 2; i <= b; i++) re = (re * a) % mod; return re; } long long sumup() { long long tmp = 0; for(int i = 1; i <= c; i++) { tmp += s[i]; } if(tmp != n) return 0; tmp = 0; for(int i = 1; i <= c; i++) { tmp = (tmp + pw(s[i], m)) % mod; } return tmp; } void dfs(int cnt, int nm) { if(c == k) { ans = (sumup() + ans) % mod; return; } c++; for(int i = nm; i <= n; i++) { s[c] = i; dfs(cnt + 1, i); } c--; return; } int main () { scanf("%d%d%d", &n, &k, &m); dfs(0, 1); printf("%d\n", ans); return 0; }