[省选联考 2020 A 卷] 组合数问题
题意
想法
自己在多项式和数论方面还是太差了,最近写这些题都没多少思路,看完题解才会
首先有这两个柿子
\(k*\dbinom{n}{k} = n*\dbinom{n - 1}{k - 1}\)
\((1 + x) ^ n = \sum_{i = 0}^{n}\dbinom{n}{i}x^i\)
然后对于题目中所要求的多项式\(f(x)\)我们自然把他拆开,对于一个单个\(k\)对答案贡献
\(\sum_{i = 1}^{m}a_i * (k^i * x^k * \dbinom{n}{k})\)
然后我们发现这个项\(k^i* \dbinom{n}{k}\)
是我们所给的第一个柿子的拓展
我们取\(i = 2\)来看看柿子的展开
\(k^2* \dbinom{n}{k}\)
\(k*((n) * \dbinom{n - 1}{k - 1})\)
\((k - 1 + 1)*((n) * \dbinom{n - 1}{k - 1})\)
\((k - 1)*n*\dbinom{n - 1}{k - 1} + n * \dbinom{n - 1}{k - 1}\)
\(n*(n - 1)*\dbinom{n - 2}{k - 2} + n * \dbinom{n - 1}{k - 1}\)
取\(i = 3.......\)
我们发现\(k^p * \dbinom{n}{k}\)
可以变为这个柿子
\(\sum_{i = 1}^pS(p,i)n^{\underline i}\dbinom{n - i}{k - i}\)
其中\(n^{\underline i}\)是下降幂
而\(S(p,i)\)这个系数可以这样推来\(S(p,i) = i * S(p - 1,i) + S(p - 1,i - 1)\)
当你在计算展开的时候我们注意到如果我们先把\(k\)给乘进去可以很自然的把一些柿子给转化成\(k^i-1\dbinom{n}{k}\)的展开形式
这个时候会给\(S(p,i)多一个S(p - 1,i - 1)的系数\)
然后我们会发现把可转化的柿子转化完后\(我们把k拆成(k - i + i)这个时候又会多一个i * S(p - 1,i)\)
这是一个好的结论
\(k^p * \dbinom{n}{k}\ =\ \sum_{i = 1}^pS(p,i)n^{\underline i}\dbinom{n - i}{k - i}\)
其中
\(S(p,i) = i * S(p - 1,i) + S(p - 1,i - 1)\)
然后我们往原柿子里带(打不动了)

括号里用二项式定理打开

做完了

代码
#include <cstdio>
using namespace std;
typedef long long LL;
inline LL read()
{
	LL val = 0; char c = getchar();
	while(c < '0' || c > '9') c = getchar();
	while(c >= '0' && c <= '9') { val = val * 10 + (c ^ 48); c = getchar(); }
	return val;
}
const int M = 1005;
LL a[M], n, x, p, m, S[M][M], ans;
inline LL Qpow(LL b, LL c)
{
	LL res = 1;
	while(c)
	{
		if(c & 1) res = res * b % p;
		b = b * b % p;
		c >>= 1;
	}
	return res;
}
int main()
{
	n = read(); x = read(); p = read(); m = read();
	for(int i = 0; i <= m; i++) a[i] = read();
	S[1][1] = 1;
	for(int i = 2; i <= m; i++)
		for(int j = 1; j <= i; j++)
			S[i][j] = ((S[i - 1][j] * j) % p + S[i - 1][j - 1]) % p;
	ans = a[0] * Qpow(x + 1, n) % p;
	for(int i = 1; i <= m; i++)
	{
		LL sum = 0, tmp = n;
		for(int j = 1; j <= i; j++)
		{
			sum = (sum + (S[i][j] * tmp % p * Qpow(x, j) % p * Qpow(x + 1, n - j) % p)) % p;
			tmp = tmp * (n - j) % p;
		}
		ans = (ans + a[i] * sum % p) % p;
	}
	printf("%lld\n", ans);
	return 0;
}
												
											[省选联考 2020 A 卷] 组合数问题的更多相关文章
- luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数)
		
luoguP6620 [省选联考 2020 A 卷] 组合数问题(斯特林数) Luogu 题外话: LN切这题的人比切T1的多. 我都想到了组合意义乱搞也想到可能用斯特林数为啥还是没做出来... 我怕 ...
 - [题解] LOJ 3300 洛谷 P6620 [省选联考 2020 A 卷] 组合数问题 数学,第二类斯特林数,下降幂
		
题目 题目里要求的是: \[\sum_{k=0}^n f(k) \times X^k \times \binom nk \] 这里面出现了给定的多项式,还有组合数,这种题目的套路就是先把给定的普通多项 ...
 - luoguP6623 [省选联考 2020 A 卷] 树(trie树)
		
luoguP6623 [省选联考 2020 A 卷] 树(trie树) Luogu 题外话: ...想不出来啥好说的了. 我认识的人基本都切这道题了. 就我只会10分暴力. 我是傻逼. 题解时间 先不 ...
 - luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理)
		
luoguP6624 [省选联考 2020 A 卷] 作业题(莫比乌斯反演,矩阵树定理) Luogu 题外话: Day2一题没切. 我是傻逼. 题解时间 某种意义上说刻在DNA里的柿子,大概是很多人学 ...
 - 洛谷P6623——[省选联考 2020 A 卷] 树
		
传送门:QAQQAQ 题意:自己看 思路:正解应该是线段树/trie树合并? 但是本蒟蒻啥也不会,就用了树上二次差分 (思路来源于https://www.luogu.com.cn/blog/dengy ...
 - P6628-[省选联考 2020 B 卷] 丁香之路【欧拉回路,最小生成树】
		
正题 题目链接:https://www.luogu.com.cn/problem/P6628 题目大意 给出\(n\)个点的一张完全无向图,\(i\sim j\)的边权是\(|i-j|\). 然后给出 ...
 - 洛谷 P6624 - [省选联考 2020 A 卷] 作业题(矩阵树定理+简单数论)
		
题面传送门 u1s1 这种题目还是相当套路的罢 首先看到 \(\gcd\) 可以套路地往数论方向想,我们记 \(f_i\) 为满足边权的 \(\gcd\) 为 \(i\) 的倍数的所有生成树的权值之和 ...
 - 题解 P6622 [省选联考 2020 A/B 卷] 信号传递
		
洛谷 P6622 [省选联考 2020 A/B 卷] 信号传递 题解 某次模拟赛的T2,考场上懒得想正解 (其实是不会QAQ), 打了个暴力就骗了\(30pts\) 就火速溜了,参考了一下某位强者的题 ...
 - luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp)
		
luoguP6622 [省选联考 2020 A/B 卷] 信号传递(状压dp) Luogu 题外话: 我可能是傻逼, 但不管我是不是傻逼, 我永远单挑出题人. 题解时间 看数据范围可以确定状压dp. ...
 
随机推荐
- css实现水平-垂直居中的方法
			
* 定宽居中: 1.absolute+负margin 2.absolute+margin:auto 3.absolute--calc 4.min-height:100vh + flex + margi ...
 - 关于takin-data,你想知道的都在这里(一)启动命令篇
			
通过docker部署体验takin的小伙伴都应该知道,在安装部署手册中有提到:在启动surge-deploy任务前,需要将启动命令中的ip参数替换为docker容器所在宿主机的ip,很多小伙伴都在这里 ...
 - 【二食堂】Beta - 测试报告
			
Beta - 测试报告 测试过程中发现的bug Beta阶段的新bug 我们在Beta阶段的开发过程中就进行了测试,发现了许多bug.这其中后端的bug比较多,在这里我列举一些比较重要的功能性bug. ...
 - 软件案例分析——VS、VS Code
			
软件案例分析--VS和VS Code 第一部分 调研,测评 一.使用10–30分钟这个软件的基本功能(请上传使用软件的照片) VS code Visual Studio 二.主要功能和目标用户有何不同 ...
 - 期望dp好题选做
			
前言: 最近连考两场期望dp的题目,sir说十分板子的题目我竟然一点也不会,而且讲过以后也觉得很不可改.于是开个坑. 1.晚测10 T2 大佬(kat) 明明有\(O(mlog)\)的写法,但是\(m ...
 - Machine learning(4-Linear Regression with multiple variables )
			
1.Multiple features So what the form of the hypothesis should be ? For convenience, define x0=1 At t ...
 - 数组中出现次数超过一半的数字 牛客网 剑指Offer
			
数组中出现次数超过一半的数字 牛客网 剑指Offer 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字 ...
 - valid-palindrome leetcode C++
			
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...
 - poj 2226 Muddy Fields(最小点覆盖)
			
题意: M*N的矩阵,每个格不是*就是#. *代表水坑,#代表草地. 农民要每次可以用一块宽为1,长不限的木板去铺这个矩阵.要求这块木板不能覆盖草地.木板可以重复覆盖(即一块木板与另一块木板有 ...
 - HDC2021:HMS Core分析服务,数智化营销闭环方案帮助开发者实现精益增长
			
10.22-10.24华为开发者大会2021(Together)在东莞如期举行.本次大会上,HMS Core华为分析服务作为多平台.跨设备的一站式数据分析平台以数据驱动业务智能决策为理念,带来了数智化 ...