比赛 中秋节快乐! 评测结果 AAAAAAAAAAEEEEEEEEEE
题目名称 数列 最终得分 50
用户昵称 小金 运行时间 3.185 s
代码语言 C++ 内存使用 35.41 MiB
提交时间 2024-09-17 11:58:38
显示代码纯文本
#include<iostream>
#include<cstring>
using namespace std;
const long long mod=998244353;
int n,m,k,v[105],a[105];
long long f[35][120005];
int ji(long long x)
{
	int res=0;
	while(x)
	{
		x-=(-x&x);
		res++;
	}
	return res;
}
long long dfs(int x,long long s)
{
	if(x>=n+1) return ji(s)<=k;
	if(f[x][s]!=-1) return f[x][s];
	long long res=0;
	for(int i=0;i<=m;i++)
	{
		a[x]=i;
		res=(res+dfs(x+1,s+(1<<i))*v[i]%mod)%mod;
	}
	return f[x][s]=res;
}
int main()
{
    freopen("2021sequence.in","r",stdin);
    freopen("2021sequence.out","w",stdout);
	memset(f,-1,sizeof(f));
	scanf("%d%d%d",&n,&m,&k);
	for(int i=0;i<=m;i++)
    {
        scanf("%d",&v[i]);
    } 
	printf("%lld",dfs(1,0));
	return 0;
}