CF414B 题解

也可以在 CF414B 题解 (tencentcs.com) 获得更好的阅读体验。

CF414B 题解

感觉这题还是比较简单的,首先你很容易想到设 fi,j 为长度为 i,最后一个数字为 j 的种类数。

接下来考虑转移,这个部分其实也是比较简单的。你可以考虑接 什么数字 在当前的右边,那么也就是 fi,j=i|lfj1,l

然后就做完了。O(n2n),跑个 2e3 还是没有问题的。

#include <bits/stdc++.h>
using namespace std;

#define endl '\n'
#define int long long
#define lson (p << 1)
#define rson ((p << 1) | 1)
#define mid ((l + r) >> 1)

const int MAXN = 2e3 + 5, mod = 1000000007;
int f[MAXN][MAXN], n, k;

signed main(void) {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> k;
    for (int i = 0; i <= max(n, k); ++i) f[1][i] = 1;
    for (int i = 2; i <= k; ++i) {
        for (int j = 1; j <= n; ++j) {
            for (int l = 1; l * j <= n; ++l) {
                f[i][j] = (f[i][j] + f[i - 1][j * l]) % mod;
            }
        }
    }
    int ans = 0;
    for (int i = 1; i <= n; ++i) ans = (ans + f[k][i]) % mod;
    cout << ans << endl;
    return 0;
}

posted @   小蛐蛐awa  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示