Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // https://codeforces.com/group/JC4gmpF4LH/contest/259112/problem/T
- #include <bits/stdc++.h>
- using namespace std;
- #define vi vector<int>
- #define vll vector<ll>
- #define ll long long
- #define pb push_back
- #define eb emplace_back
- #define mp make_pair
- #define ii pair<int, int>
- #define ff first
- #define ss second
- #define PRIME 1000000007
- // value, pos
- int t[2005][2005];
- int f(vi &a, size_t i, int n) {
- if (n <= 0) return 0;
- if (i == a.size()) return 1;
- if (t[a[i]][i]) return t[a[i]][i];
- int ans = 0;
- int pre = a[i];
- for (int j = 1; j <= n; j++) {
- int aux;
- if (i > 0) {
- aux = a[i - 1] * j;
- } else {
- aux = j;
- }
- if (aux <= n) {
- a[i] = aux;
- ans = (ans + f(a, i + 1, n)) % PRIME;
- } else
- break;
- }
- t[a[i]][i] = ans;
- a[i] = pre;
- return ans;
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- int n, k;
- cin >> n >> k;
- memset(t, 0, sizeof(t));
- vi v(k);
- fill(v.begin(), v.end(), 1);
- int ans = f(v, 0, n);
- cout << ans << endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement