正题

题目链接:https://www.luogu.com.cn/problem/P6800


题目大意

给出一个\(n\)此多项式\(P\),对于\(k\in[0,m-1]\)所有的求\(P(c^k)\)

输出答案对\(998244353\)取模

\(1\leq n,m\leq 10^6\)


解题思路

\[g(n)=\sum_{i=0}^{n-1}a_ic^{i\times n}
\]

然后根据\(i\times n=\binom{i+n}{2}-\binom{i}{2}-\binom{n}{2}\)有

\[g(n)=c^{-\binom{n}{2}}\sum_{i=0}^{n-1}a_ic^{\binom{i+n}{2}}c^{-\binom{i}{2}}
\]

然后这是一个反着卷积的形式,直接上NTT就好了

时间复杂度\(O(n\log n)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=4e6+10,P=998244353;
ll n,m,c,a[N],r[N],F[N],G[N];
ll power(ll x,ll b){
ll ans=1;b%=P-1;
while(b){
if(b&1)ans=ans*x%P;
x=x*x%P;b>>=1;
}
return ans;
}
ll C(ll n)
{return n*(n-1)/2;}
void NTT(ll *f,ll n,ll op){
for(ll i=0;i<n;i++)
if(i<r[i])swap(f[i],f[r[i]]);
for(ll p=2;p<=n;p<<=1){
ll tmp=power(3,(P+1)/p),len=p>>1;
if(op==-1)tmp=power(tmp,P-2);
for(ll k=0;k<n;k+=p){
ll buf=1;
for(ll i=k;i<k+len;i++){
ll tt=f[i+len]*buf%P;
f[i+len]=(f[i]-tt+P)%P;
f[i]=(f[i]+tt)%P;
buf=buf*tmp%P;
}
}
}
if(op==-1){
ll invn=power(n,P-2);
for(ll i=0;i<n;i++)
f[i]=f[i]*invn%P;
}
return;
}
signed main()
{
scanf("%lld%lld%lld",&n,&c,&m);
ll inv=power(c,P-2);
for(ll i=0;i<n;i++)
scanf("%lld",&a[i]);
for(ll i=0;i<n+m;i++)
F[i]=power(c,C(n+m-i-1));
for(ll i=0;i<n;i++)
G[i]=a[i]*power(inv,C(i))%P;
ll len=1;
while(len<n+m)len<<=1;
for(ll i=0;i<len;i++)
r[i]=(r[i>>1]>>1)|((i&1)?(len>>1):0);
NTT(F,len,1);NTT(G,len,1);
for(ll i=0;i<len;i++)F[i]=F[i]*G[i]%P;
NTT(F,len,-1);
for(ll i=n+m-1;i>=n;i--)
printf("%lld ",F[i]*power(inv,C(n+m-i-1))%P);
return 0;
}

最新文章

  1. C#动态规划查找两个字符串最大子串
  2. PostgreSQL-数据目录与pg_ctl
  3. Python错误和异常学习
  4. Django初体验(一):自定义表单提交
  5. 数据库SQL及相关
  6. Spring IoC反转控制的快速入门
  7. 【总结】java命令解析以及编译器,虚拟机如何定位类
  8. NotePad++ delphi/Pascal函数过程列表插件
  9. Visual Studio 调试技巧 (三) -- 调试第三方组件代码
  10. ROS中Mangle解析
  11. PATH menu
  12. Kindeditor JS 取值问题以及上传图片后回调等
  13. 多线程的休息室WaitSet详细介绍
  14. ubuntu14.04 mysql数据库允许远程访问设置
  15. requests库入门14-Cookie
  16. web缓存服务器varnish-4.1.6的部署及配置详解
  17. Codeforces 844D Interactive LowerBound - 随机化
  18. B+/-Tree原理
  19. 微信小程序——收起和查看更多功能
  20. pom.xml文件错误

热门文章

  1. cad转换成png,svg
  2. 如何在github上fork以及同步原作者代码
  3. 梯度下降做做优化(batch gd、sgd、adagrad )
  4. ProjectEuler 008题
  5. 回顾games101中的SSAA和MSAA
  6. mysql索引基本介绍
  7. Learning ROS: Packaging your ROS project as a snap
  8. MySQL-存储引擎-1
  9. SpringMVC笔记(1)
  10. Springboot 整合通用mapper和pagehelper展示分页数据(附github源码)