Bzoj4818:生成函数 快速幂】的更多相关文章

转来的题面:首先这题显然补集转化,就是用全部方案减去不含任何质数的方案.然后怎么做呢?考虑m比较小,我们能大力把<=m的质数全都筛出来.发现n很大,要么倍增要么快速幂......发现p相当小,所以我们能在mod p的同余系下做啊. 一看到同余系下求方案数立刻想到卷积和生成函数......假设我们有一个多项式f(x),其中x^i的系数为a个数的序列mod p为i的方案数(a为我们引入的变量).同时我们有另一个多项式g(x),其中x^i的系数为b个数的序列mod p为i的方案数(b为我们引入的变量)…
链接:https://ac.nowcoder.com/acm/contest/992/A来源:牛客网 题目描述 目前,SARS 病毒的研究在世界范围内进行,经科学家研究发现,该病毒及其变种的 DNA 的一条单链中,胞嘧啶.腺嘧啶均是成对出现的.这虽然是一个重大发现,但还不是该病毒的最主要特征,因为这个特征实在太弱了. 为了进一步搞清楚该病毒的特征,CN 疾病控制中心和阿里巴巴集团合作,用科技的力量和程序的思维来解决这个难题.现阿里巴巴特委派你成为 CN 疾病控制中心的 SARS 高级研究员,去研…
题目 Alice想要得到一个长度为n的序列,序列中的数都是不超过m的正整数,而且这n个数的和是p的倍数.Alice还希望 ,这n个数中,至少有一个数是质数.Alice想知道,有多少个序列满足她的要求. 输入格式 一行三个数,n,m,p. 1<=n<=10^9,1<=m<=2×10^7,1<=p<=100 输出格式 一行一个数,满足Alice的要求的序列数量,答案对20170408取模. 输入样例 3 5 3 输出样例 33 题解 由题目中"至少一个是质数的条件…
题目大意 本题的满二叉树定义为:不存在只有一个儿子的节点的二叉树. 定义一棵满二叉树\(A\)包含满二叉树\(B\)当且经当\(A\)可以通过下列三种操作变成\(B\): 把一个节点的两个儿子同时删掉 把一棵子树替换成根的的左子树或右子树. 定义\(k\)连树为一棵只有恰好\(k\)个叶子的满二叉树,如果某个节点有一个右孩子,那么这个右孩子一定是一个叶子. 对于给定的\(k\)和\(n\),对于所有在\(1\)到\(n\)之间的\(i\),你需要求出所有叶子节点恰好为\(i\),且不包含\(k\…
传送门 生成函数简单题. 题意:给出一个集合A={a1,a2,...as}A=\{a_1,a_2,...a_s\}A={a1​,a2​,...as​},所有数都在[0,m−1][0,m-1][0,m−1]之间,mmm是一个质数,求满足全部由这个集合里的组成且长度为nnn且所有数之积与xxx在模mmm意义下相同的数列总数. 思路:对a1,a2,..,as,xa_1,a_2,..,a_s,xa1​,a2​,..,as​,x全部化成gb1,gb2,...gbs,gyg^{b_1},g^{b_2},..…
这题一看就觉得是生成函数的题... 我们不妨去推下此题的生成函数,设生成函数为$F(x)$,则$[x^s]F(x)$即为答案. 根据题意,我们得到 $F(x)=x+\sum_{i∈D} F^i(x)$,其中前面单独出现的$x$可以理解为空树的情况. 如果$i$的范围很小,那么我们就可以用求根公式去解多项式方程23333. 然而考虑到$i$最大为$10^5$,根据阿贝尔定理,无根式解,所以不能用此方法. 我们对原先的式子做一个移项,得$F(x)-\sum_{i∈D} F^i(x)=x$. 我们构造…
$A(x)=1+x^2/2!+x^4/4!...$ $A(x)=1+x^1/1!+x^2/2!...$ 然后把生成函数弄出来. 暴力手算. 发现结论. 直接是$4^{n-1}+2^{n-1}$ 然后快速幂. #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include…
还是没有理解透原根--题目提示其实挺明显的,M是质数,然后1<=x<=M-1 这种计数就容易想到生成函数,但是生成函数是加法,而这里是乘法,所以要想办法变成加法 首先因为0和任何数乘都是0,和其他数规则不相符,所以不考虑(答案也没让求) 然后看原根的性质,设g是M的原根,那么\( g^i%M 0<=i<M-1 \)就是1~M-1的不重集合,所以可以把乘法变成原根指数的加法,这样就变成多项式乘法了,可以用NTT优化 然后n非常大,所以使用快速幂进行多项式乘法 #include<…
传送门 两个序列相同当且仅当它们的笛卡尔树相同,于是变成笛卡尔树计数. 然后注意到每一个点的权值一定会比其左儿子的权值大,所以笛卡尔树上还不能够存在一条从根到某个节点的路径满足向左走的次数\(> m-1\).不难证明只需这个条件以及\(n \geq m\)的条件满足,一定存在一种权值分配方案使得\(1\)到\(m\)都被分配到. 不妨设\(F_i(x)\)表示向左走的次数小于\(i\)的笛卡尔树数量的生成函数,即\(f_{i,j}\)表示\(j\)个点.向左走的次数小于\(i\)的笛卡尔树的数量…
题目分析: 一个很显然的同类项合并.注意到p的大小最大为100,考虑把模p意义下相同的求出来最后所有的减去没有质数的做矩阵快速幂即可. 代码: #include<bits/stdc++.h> using namespace std; ; ; int n,m,q; ][]; ],num; ][],Res[][],po[][]; void init(){ flag[] = ; ;i<=m;i++){ if(!flag[i]) prime[++num] = i; ;j<=num&…