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 PyPy3 (2.4.0) (judge verdict: Accepted)

from math import sqrt, floor
N, K = map(int, input().split())
mod = 10**9+7

sn = floor(sqrt(N))
t = N//(sn + 1)

dp1 = [0] + [1]*sn + [0]
dp2 = [0] + [N//j - N//(j+1) for j in range(1, t+1)]
dp2 += [0]*(len(dp1) - len(dp2))
C = dp2[:]
for _ in range(K-1):
    d1 = [0]*(sn + 2)
    d2 = [0]*(sn + 2)
    
    sumd1 = 0
    for d in dp1[1:]:
        sumd1 = (sumd1 + d) % mod
    
    d1[1] = sumd1
    
    for i in range(1, sn+1):
        d2[i] = (d2[i] + dp1[i]) % mod
        d1[1] = (d1[1] + dp2[i]) % mod
        d1[i+1] = (d1[i+1] - dp2[i]) % mod
    
    for i in range(1, sn+2):
        dp1[i] = (d1[i] + dp1[i-1])%mod
        dp2[i] = (d2[i] + dp2[i-1])%mod
    dp1[-1] = 0
    
    dp2 = [d*c%mod for d, c in zip(dp2, C)]
ans = 0
for d in dp1:
   ans = (ans + d)%mod
for d in dp2:
    ans = (ans + d)%mod
print(ans)