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; }