牛牛与数组

牛牛喜欢这样的数组:
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;
}

发布了37 篇原创文章 · 获赞 0 · 访问量 353

猜你喜欢

转载自blog.csdn.net/weixin_43191153/article/details/104451940