牛牛与数组
#include <iostream>
#include <cstring>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
#define mod 1000000007
typedef long long ll;
const int maxn = 110;
ll dp[20][100100];
int main()
{
ll n, k;
scanf("%lld %lld", &n, &k);
for (ll i = 1; i <= k;i++)
dp[1][i] = 1;
for (int i = 2; i <= n;i++)
{
ll sum = 0;
for (int j = 1; j <= k;j++)
sum += dp[i - 1][j], sum %= mod;
for (int j = 1; j <= k; j++)
{
ll s = 0;
for (int u = j * 2; u <= k; u += j)
{
s += dp[i - 1][u];
s %= mod;
}
dp[i][j] = (sum - s) % mod;
}
}
ll ans = 0;
for (int i = 1; i <= k;i++)
ans += dp[n][i], ans %= mod;
printf("%lld\n", ans);
}