CF414B Mashmokh and ACM

简介: CF414B Mashmokh and ACM

Mashmokh’s boss, Bimokh, didn’t like Mashmokh. So he fired him. Mashmokh decided to go to university and participate in ACM instead of finding a new job. He wants to become a member of Bamokh’s team. In order to join he was given some programming tasks and one week to solve them. Mashmokh is not a very experienced programmer. Actually he is not a programmer at all. So he wasn’t able to solve them. That’s why he asked you to help him with these tasks. One of these tasks is the following.


A sequence of l integers b1, b2, …, bl (1 ≤ b1 ≤ b2 ≤ … ≤ bl ≤ n) is called good if each number divides (without a remainder) by the next number in the sequence. More formally for all i (1 ≤ i ≤ l - 1).


Given n and k find the number of good sequences of length k. As the answer can be rather large print it modulo 1000000007 (109 + 7).


Input

The first line of input contains two space-separated integers n, k (1 ≤ n, k ≤ 2000).


Output

Output a single integer — the number of good sequences of length k modulo 1000000007 (109 + 7).


如果一个数列中,后一个数都能被前面一个数整除,那么就叫这个数列为好数列。输入n,k,求数列中最大元素为n,数列长度为k的好数列的种数(对1000000007取模)

题解:类似(埃式筛法)

那么首先设计状态,用dp[i][j]来表示长度为i,末位数字为k的情况下,能够达到的最优解。

#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int maxn = 2005;
int dp[maxn][maxn];
int main() {
  int n, m;
  cin >> n >> m;
  dp[0][1] = 1;
  for (int i = 0; i <= m; i++) {
    for (int j = 1; j <= n; j++) {
      for (int k = j; k <= n; k += j) {
        dp[i + 1][k] = (dp[i + 1][k] + dp[i][j]) % mod;
      }
    }
  }
  int ans = 0;
  for (int i = 1; i <= n; i++) {
    ans = (ans + dp[m][i]) % mod;
  }
  cout << ans << endl;
  return 0;
}
目录
打赏
0
0
0
0
0
分享
相关文章
阿里云服务器被xmrigMiner及pnscan及伪装httpd的病毒入侵排查记录
阿里云服务器被xmrigMiner及pnscan及伪装httpd的病毒入侵排查记录
1328 0
邮件发送API使用方法?代码应该怎么编辑
邮件发送API简化了编程式邮件发送,如SendGrid、Mailgun、Amazon SES是常见提供商。获取API密钥后,以Python和SendGrid为例,发送邮件涉及设置API密钥、创建客户端、定义邮件内容及发送。运行代码得到发送响应,确保邮件成功发送。AokSend提供高触达、触发式SMTP/API发信服务。集成API能快速高效地在应用中实现邮件功能。
Odoo 安装方式选择:源码安装 vs Docker
Odoo部署常采用源码编译或Docker容器化,但分别面临依赖复杂、版本风险和服务化难题,以及镜像臃肿和扩展受限的问题。Websoft9提出混合方案,融合两者优势:通过智能环境适配、三阶段部署流程(环境预检、混合模式选择、持久化配置)及声明式YAML配置,实现高效、灵活的双模运行时。此方案显著降低依赖冲突解决时间(从83分钟至0),生产环境构建耗时缩短至8分钟,并达100% CVE漏洞修复率,适合ERP定制开发与规模化部署的企业需求。
实时计算 Flink版产品使用合集之从MySQL同步数据到Doris时,历史数据时间字段显示为null,而增量数据部分的时间类型字段正常显示的原因是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStreamAPI、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
Spring MVC核心:深入理解@RequestMapping注解
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的核心,它将HTTP请求映射到控制器的处理方法上。本文将深入探讨`@RequestMapping`注解的各个方面,包括其注解的使用方法、如何与Spring MVC的其他组件协同工作,以及在实际开发中的应用案例。
352 4
MySQL Limit实现原理
本文详细探讨了MySQL中`LIMIT`子句的实现原理及其在不同场景下的应用。`LIMIT`用于控制查询结果的行数,结合`OFFSET`可实现分页查询。其内部实现涉及解析器、优化器和执行器三部分,通过索引利用、子查询优化等提升性能。文章还提供了性能优化策略,如索引优化、覆盖索引及延迟关联等,并给出实践建议。
373 3
switch语句,到底隐藏了多少坑?
在Java编程中,switch语句以简洁高效著称,但也暗藏陷阱。遗忘`break`会导致意外的“贯穿”执行,须在每个case后添加`break`以终止流程。switch表达式的类型有限制,如float和double不被接受,需转换为整数类型或采用其他策略。遗漏`default`子句可能造成逻辑漏洞,应始终考虑不匹配情况以增强代码健壮性。正确运用这些技巧,能让代码更稳健优雅。
219 2
vue3【详解】选项式 API 实现逻辑复用
vue3【详解】选项式 API 实现逻辑复用
115 1
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问