澎湖县网站建设_网站建设公司_关键词排名_seo优化
2026/1/19 19:30:58 网站建设 项目流程

题目链接

题目求 \(\displaystyle \sum _ {i = 0} [x ^ {ik + r}] (1 + x) ^ {nk}\),定义多项式的循环卷积为两个多项式相乘后,把所有 \(x ^ i\) 的项合并到 \(x ^ {i \bmod k}\)。快速幂加速即可。

时间复杂度 \(\text O (k ^ 2 \log nk)\)

#include<cstdio>
#include<vector>
using namespace std;typedef vector<int> poly;
int k,r,mod;
long long n;
inline void add(int &x,long long y) {x=(x+y)%mod;}
poly operator*(poly a,poly b) {poly c(k);for(int i=0;i<k;i++)for(int j=0;j<k;j++)add(c[(i+j)%k],1ll*a[i]*b[j]);return c;
}
int main() {scanf("%lld%d%d%d",&n,&mod,&k,&r),n*=k;poly f(k),g(k); f[0]=g[0]=1,add(g[1%k],1);for(;n;n>>=1) {if(n&1) f=f*g;g=g*g;}printf("%d\n",f[r]);return 0;
}

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询