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 Ruby (2.3.3) (judge verdict: Time Limit Exceeded)

def root(n)
    ret = Math.sqrt(n).floor
    ret -= 1 while ret**2 > n
    ret += 1 while(ret+1)**2 <= n
    ret
end

MOD = 10**9+7
N, K = gets.split.map(&:to_i)
Q = root(N)

num = Array.new(Q+1)
(1...Q).each do |i|
    num[i] = N/i - N/(i+1)
end
num[Q] = N/Q - Q

dp1 = Array.new(K+1){Array.new(Q+1, 0)}
dp2 = Array.new(K+1){Array.new(Q+1, 0)}
dp1[0][1] = 1
K.times do |i|
    sum = dp1[i].inject(0){|a, b| (a+b) % MOD}
    (1..Q).each do |j|
        dp1[i+1][j] = sum
    end

    sum = 0
    Q.downto(1) do |j|
        sum = (sum + dp2[i][j]) % MOD
        dp1[i+1][j] = (dp1[i+1][j] + sum) % MOD
    end

    sum = 0
    (1..Q).each do |j|
        sum = (sum + dp1[i][j]) % MOD
        dp2[i+1][j] = (dp2[i+1][j] + sum * num[j]) % MOD
    end
end

ans = (dp1[K] + dp2[K]).inject(0){|a, b| (a+b) % MOD}
puts ans