ICode9

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

Luogu P6620 [省选联考 2020 A 卷] 组合数问题

2021-04-07 15:02:31  阅读:169  来源: 互联网

标签:a% 省选 Luogu ll d% ret int long 联考


题链
组合数结合下降幂的应用(我觉得组合数和下降幂真配)
见本
时间复杂度\(O(m^2)\)
注意预处理第二类斯特林数,写错了2次

#include<bits/stdc++.h>
#define ll long long
using namespace std;

const int N=1005;
int n,x,p,m,a[N],s[N][N],b[N];
inline int mo(int x) {
	return x>=p?x-p:x;
}
inline int ksm(ll a,int b) {
	ll ret=1;
	while(b) {
		if(b&1) ret=ret*a%p;
		a=a*a%p,b>>=1;
	}
	return ret;
}
int main() {
	scanf("%d%d%d%d",&n,&x,&p,&m);
	for(int i=0;i<=m;i++)  scanf("%d",&a[i]);
	s[0][0]=1;
	for(int j=1;j<=m;j++) {
		s[j][j]=1;
		for(int i=j+1;i<=m;i++) {
			s[i][j]=((ll)s[i-1][j-1]+(ll)j*s[i-1][j])%p;
		}
	}
	for(int j=0;j<=m;j++) {
		for(int i=j;i<=m;i++) {
			b[j]=((ll)a[i]*s[i][j]+b[j])%p;
		}
	}
	int ans=(ll)b[0]*ksm(1+x,n)%p,h=1;
	for(int i=1;i<=m;i++) {
		h=(ll)h*(n-i+1)%p;
		ans=((ll)b[i]*h%p*ksm(x,i)%p*ksm(1+x,n-i)+ans)%p;
	}
	printf("%d\n",ans);
	return 0;
}

标签:a%,省选,Luogu,ll,d%,ret,int,long,联考
来源: https://www.cnblogs.com/wsfwsf/p/14627672.html

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

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

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

ICode9版权所有