Codeforces 414B Mashmokh and ACM

时间:2023-03-09 15:58:28
Codeforces 414B Mashmokh and ACM

http://codeforces.com/problemset/problem/414/B

题目大意:

题意:一个序列B1,B2...Bl如果是好的,必须满足Bi | Bi + 1(a | b 代表a整除b), 求长度为K,元素大小小于等于N的序列个数

思路:f[i][j] 代表在序列的第i位,当前数字为j的方案数

 #include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<iostream>
const int Mod=;
int f[][];
int n,K;
int read(){
int t=,f=;char ch=getchar();
while (ch<''||ch>''){if (ch=='-') f=-;ch=getchar();}
while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
return t*f;
}
int main(){
n=read();K=read();
for (int i=;i<=n;i++)
f[][i]=;
for (int i=;i<=K;i++)
for (int j=;j<=n;j++){
for (int k=;k<=sqrt(j);k++)
if (j%k==){
f[i][j]=(f[i][j]+f[i-][k])%Mod;
if (k*k!=j)
f[i][j]=(f[i][j]+f[i-][j/k])%Mod;
}
}
int ans=;
for (int i=;i<=n;i++)
ans=(ans+f[K][i])%Mod;
printf("%d\n",ans);
return ;
}