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++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

using namespace std;

long long MOD=1000000007;
long long D[101][100001], S=0, Su=0;
vector <pair<long long, long long>> V;

int main()
{
    int n, k, a;
    cin >> n >> k;
    D[1][0] = 0;
    for (int i = 1; i <= sqrt(n); i++)
    {
        V.push_back({i, 1});
    }
    a = sqrt(n);
    for (int i = ceil(sqrt(n))-1; i >= 1; i--)
    {
        if (i == a && n / a == a)
            continue;
        V.push_back({i, n/i - n/(i+1)});
    }
    for (int i = 1; i <= V.size(); i++)
    {
        D[1][i] = V[i-1].second;
    }
    for (int i = 2; i <= k; i++)
    {
        D[i][0] = 0;
        S = 0;
        for (int y = V.size(); y >= 1; y--)
        {
            S += D[i-1][V.size()-y+1];
            S %= MOD;
            D[i][y] = S*V[y-1].second;
            D[i][y] %= MOD;
            if (i == k)
            {
                Su += D[i][y];
                Su %= MOD;
            }
        }
    }
    cout << Su;
    return 0;
}