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 Rust (1.42.0) (judge verdict: Accepted)

#[allow(unused_imports)]
use proconio::{
    fastout, input,
    marker::{Bytes, Chars, Isize1, Usize1},
};

const MOD: usize = 1_000_000_007;

fn main() {
    input! {
        n:usize,k:usize
    }
    if n == 1 {
        println!("1");
        return;
    }
    let mut count = vec![0];
    let mut i = 1;
    while i <= n {
        let j = n / i;
        if i <= j {
            count.push(1);
            i += 1;
        } else {
            count.push(n / j + 1 - i);
            i = n / j + 1;
        }
    }
    let mut dp = count.clone();
    for _ in 1..k {
        let mut sum = vec![];
        let mut buf = 0;
        for &i in &dp {
            buf += i;
            sum.push(buf);
        }
        for i in 1..count.len() {
            dp[i] = (sum[count.len() - i] * count[i]) % MOD;
        }
        //dbg!(&dp);
    }
    println!("{}", dp.iter().sum::<usize>() % MOD);
}