牛牛喜欢这样的数组:
1:长度为n
2:每一个数都在1到k之间
3:对于任意连续的两个数A,B,A<=B 与(A % B != 0) 两个条件至少成立一个
请问一共有多少满足条件的数组,对1e9+7取模
输入描述:
输入两个整数n,k
1 ≤ n ≤ 10
1 ≤ k ≤ 100000
输出描述:
输出一个整数
#include<stdio.h>
#include<string.h>
#define mod (1000000007)
int main(void)
{
int n,k;
scanf("%d%d",&n,&k);
static long long jl[10+1][100000+1] = {0};
int i,j,h;
for(i = 1;i <= k;i++)
{
jl[1][i] = 1;
}
long long sum = k;
for(i = 2;i <= n;i++)
{
long long re = 0;
for(j = 1;j <= k;j++)
{
jl[i][j] = sum;
for(h = j*2;h <= k;h+=j)
{
jl[i][j] = (jl[i][j]-jl[i-1][h])%mod;
}
re = (re+jl[i][j])%mod;
}
sum = re;
}
printf("%lld",sum);
return 0;
}