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 5.4.1) (judge verdict: Wrong Answer)

#include<stdio.h>
#define mod 1000000007
int main(){
	int i,c=0;
	long long n,k,ans=1,yak[1000];
	scanf("%lld%lld",&n,&k);
	for(i=1;i*i<=n;i++){
		if(n%i==0)yak[c++]=i;
	}
	if(n!=yak[c-1]*yak[c-1]){
		for(i=0;i<c;i++){
		yak[c+i]=n/yak[c-1-i];
		}c*=2;
	}
	else{
		for(i=0;i<c-1;i++){
			yak[c+i]=n/yak[c-2-i];
		}c=c*2-1;
	}
	long long ans2=1;
	for(i=0;i<k;i++){
		ans2*=n;
		ans2%=mod;
		ans*=n;
		ans%=mod;
	}
	for(i=c-1;i>0;i--){
		long long tmp=(yak[i]-yak[i-1])*((n-n/yak[i])%mod);
		tmp%=mod;
		tmp=(tmp*(k-1))%mod;
		ans-=tmp;
		ans%=mod;
		if(ans<0)ans+=mod;
	}
	long long ans3=(-1+ans2-ans+mod)%mod;
	printf("%lld\n",ans3);
	return 0;
}