CodeForces 414B - Mashmokh and ACM

给你长度为 的整数数列b1, b2, ..., bl(1 ≤ b1 ≤ b2 ≤ ... ≤ bl ≤ n)

如果这个数列被称为好的,那么每个元素都可以整除下一个元素

给你n和k,去找到长度为k的好数列的个数

 

dp[任意i][1] = 1;

dp[i的倍数][长度k] = sum( dp[i][长度k-1] + 1 );

 

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 const int MOD = 1000000007 ;
 5 int n,k;
 6 long long dp[2005][2005]={0};
 7 int main()
 8 {
 9     scanf("%d%d",&n,&k);
10     for(int i = 1;i <= n; i++)
11     {
12         dp[i][1] = 1;
13         for(int j = i;j<=n; j+= i)
14         {
15             for(int v = 2 ;v<=k;v++)
16             {
17                 dp[j][v] +=dp[i][v-1];
18                 if(dp[j][v]>=MOD) dp[j][v] -= MOD;
19             }
20         }
21     }
22     long long sum=0;
23     for(int i = 1;i <= n ; i++)
24     {
25         sum += dp[i][k];
26         if(sum>MOD) sum -= MOD;
27     }
28     printf("%I64d\n",sum);
29 }

 

转载于:https://www.cnblogs.com/nicetomeetu/p/5701573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值