0w1

CFR 414 1B. Mashmokh and ACM ( DP )

Problem - 414B - Codeforces
2D/0D.

#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2000 + 2;
const int MAXK = 2000 + 2;
const int MOD = 1e9 + 7;

int n, k;

int dp[ MAXN ][ MAXK ]; // last digit i, length j, possible ways

void solve(){
    dp[ 1 ][ 0 ] = 1;
    for( int j = 0; j < k; ++j )
        for( int i = 1; i <= n; ++i )
            for( int t = i; t <= n; t += i )
                ( dp[ t ][ j + 1 ] += dp[ i ][ j ] ) %= MOD;
    int ans = 0;
    for( int i = 1; i <= n; ++i )
        ( ans += dp[ i ][ k ] ) %= MOD;
    printf("%d\n", ans);
}

int main(){
    scanf("%d%d", &n, &k);
    solve();
    return 0;
}