Problem:
Score : 600 points

Problem Statement

Find the number of sequences of length K consisting of positive integers such that the product of any two adjacent elements is at most N, modulo 10^9+7.

Constraints

1\leq N\leq 10^9

1 2\leq K\leq 100 (fixed at 21:33 JST)

N and K are integers.

Input

Input is given from Standard Input in the following format:

N K

Output

Print the number of sequences, modulo 10^9+7.

Sample Input 1

3 2

Sample Output 1

5

(1,1), (1,2), (1,3), (2,1), and (3,1) satisfy the condition.

Sample Input 2

10 3

Sample Output 2

147

Sample Input 3

314159265 35

Sample Output 3

457397712

Solution in C++ (GCC 9.2.1) (judge verdict: Runtime Error)

#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
typedef long long ll;
#define MOD 1000000007
using namespace std;
vector<ll> divisor(ll n) {
    vector<ll> ret;
    for(ll i = 1; i * i <= n; i++) {
        if(n % i == 0) {
            ret.push_back(i);
            if(i * i != n)
                ret.push_back(n / i);
        }
    }
    sort(begin(ret), end(ret));
    return (ret);
}
int main() {
    ll n, k;
    cin >> n >> k;
    vector<vector<ll>> dp(k, vector<ll>(n + 1, 0));
    for(int i = 1; i <= n; i++) {
        dp[0][i] = 1;
    }
    for(ll i = 1; i < k; i++) {
        for(ll x = 1; x <= n; x++) {
            for(ll y = 1; y <= n / x; y++) {
                dp[i][x] += dp[i - 1][y];
                dp[i][x] %= MOD;
            }
        }
    }
    ll ans = 0;
    for(int i = 0; i < n; i++) {
        ans += dp[k - 1][i + 1];
        ans %= MOD;
    }
    cout << ans << endl;
}