414B. Mashmokh and ACM:题目
1400分就进入经典dp了
题意:给你1-n的数,构造一个长度为k的串,后一个数能整除前一个数
#include <bits/stdc++.h>
using namespace std;
#define int long long
vector<int> a((int)6e5);
vector<int> b((int)6e5), c((int)6e5);
const int mod = 1e9 + 7;
signed main()
{int n, k;cin >> n >> k;vector<int> d(2002);for (int i = 1; i <= n; i++)d[i] = 1;for (int h = 1; h < k; h++){vector<int> dp(2002);for (int i = 1; i <= n; i++)dp[i] = 0;for (int i = 1; i <= n; i++){for (int j = 1; j * i <= n; j++){dp[j * i] += d[i];dp[j * i] %= mod;}}swap(dp, d);}int res = 0;for (int i = 1; i <= n; i++)res = (res + d[i]) % mod;cout << res << endl;
}