ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

abc 选做

2021-12-30 03:34:33  阅读:160  来源: 互联网

标签:abc frac int sum read 选做 prod getchar


abc231g

\(\frac{1}{n^k} \sum\frac{k!}{\prod b_i!} \prod (a_i+b_i)\),其中 \(\sum b_i=k\)

构造生成函数 \(f_i=\sum \frac{a_i+j}{j!}x^j=e^x(a_i+x)\),欲求式为 \(k![x^k]\prod f_i=k![x^k] e^{nx}\prod (a_i+x)\)

预处理 \(g_i\) 为任选 \(i\) 个乘积的和,原式为 \(\frac{1}{n^k} k!\sum\limits_{i=0}^n g_{n-i} n^{k-i} \frac{1}{(k-i)!}=\sum\limits_{i=0}^n g_{n-i} \frac{k^{\underline i}}{n^i}\)

#include<bits/stdc++.h>
using namespace std;
#define inf 1e9
const int maxn=2e5+10;
const int mod=998244353;
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
	return x*f;
}
const int N=2e3+5;
int n,k,a[N],dp[N][N],ans;
inline int ksm(int x,int y){
	int res=1;
	while(y){
		if(y&1)res=1ll*res*x%mod;
		x=1ll*x*x%mod;y>>=1;
	}return res;
}
int main(){
	n=read(),k=read();
	for(int i=1;i<=n;i++)a[i]=read();
	dp[0][0]=1;
	for(int i=1;i<=n;i++)
		for(int j=0;j<=i;j++)
			dp[i][j]=(dp[i-1][j]+1ll*a[i]*dp[i-1][j-1])%mod;
	int K=ksm(n,mod-2);
	for(int i=0,k1=1,k2=1;i<=n;i++){
		ans=(ans+1ll*dp[n][n-i]*k1%mod*k2)%mod;
		k1=1ll*k1*K%mod;k2=1ll*k2*(k-i)%mod;
	}printf("%d\n",ans);
    return 0;
}

标签:abc,frac,int,sum,read,选做,prod,getchar
来源: https://www.cnblogs.com/syzf2222/p/15747333.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有