1. //和以前写的fft不太一样,可能是因为要取模??
  2. #include<iostream>
  3. #include<cstring>
  4. #include<cmath>
  5. #include<cstdio>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef long long ll;
  9. const int mod=,maxn=;
  10. int mx,n,m,inv[maxn],a[maxn],b[maxn],c[maxn],na[maxn],w[][maxn],pos[maxn];
  11. int qmi(int x,int y){
  12. int t=;
  13. for(;y;y>>=,x=(ll)x*x%mod)if(y&)t=(ll)t*x%mod;
  14. return t;
  15. }
  16. void pre(int n){
  17. int i,x=qmi(,(mod-)/n);//以前这里的取值都和mod无关啊,取了模了不一样了?
  18. w[][]=w[][]=;
  19. for(int i=;i<n;++i)w[][i]=w[][n-i]=(ll)w[][i-]*x%mod;
  20. for(int i=;i<n;++i){
  21. pos[i]=pos[i>>]>>;
  22. if(i&)pos[i]|=n>>;
  23. }
  24. }
  25. void fnt(int *a,int n,int flag){
  26. if(n>mx)mx=n;
  27. int i,j,k,l,x,u,v;
  28. for(i=;i<n;++i)na[pos[i]]=a[i];
  29. memcpy(a,na,sizeof(int)*n);
  30. for(k=;k<n;k<<=){
  31. for(i=,x=n/k>>;i<n;i+=k<<)
  32. for(j=i,l=;j<i+k;++j,l+=x){
  33. u=a[j];v=(ll)a[j+k]*w[flag][l]%mod;
  34. a[j]=(u+v)%mod;a[j+k]=(u-v+mod)%mod;
  35. }
  36. }
  37. if(flag){
  38. x=qmi(n,mod-);
  39. for(i=;i<n;++i)a[i]=(ll)a[i]*x%mod;
  40. }
  41. }
  42. void solve_inv(int *a,int *b,int n){
  43. if(n==){b[]=qmi(a[],mod-);return;}
  44. int i;solve_inv(a,b,n>>);
  45. memcpy(c,a,sizeof(int)*n);memset(c+n,,sizeof(int)*n);
  46. pre(n<<);
  47. fnt(b,n<<,);fnt(c,n<<,);
  48. for(i=;i<(n<<);++i)b[i]=(-(ll)b[i]*c[i]%mod+mod)*b[i]%mod;
  49. fnt(b,n<<,);memset(b+n,,sizeof(int)*n);
  50. }
  51. int main(){
  52. int i,n;scanf("%d",&n);
  53. inv[]=inv[]=a[]=m=;
  54. while(m<=n)m<<=;
  55. for(int i=;i<=n;++i)inv[i]=mod-(ll)inv[mod%i]*(mod/i)%mod;
  56. for(int i=;i<=n;++i)inv[i]=(ll)inv[i-]*inv[i]%mod;
  57. for(int i=;i<=n;++i)a[i]=((mod-inv[i])<<)%mod;
  58. solve_inv(a,b,m);
  59. int ans=b[n];
  60. for(int i=n;i;--i)ans=((ll)ans*i+b[i-])%mod;
  61. printf("%d\n",ans);
  62. return ;
  63. }

学习地址:http://blog.csdn.net/lych_cys/article/details/51512278

bzoj4555(多项式求逆解法)的更多相关文章

  1. 【BZOJ】4555: [Tjoi2016&Heoi2016]求和 排列组合+多项式求逆 或 斯特林数+NTT

    [题意]给定n,求Σi=0~nΣj=1~i s(i,j)*2^j*j!,n<=10^5. [算法]生成函数+排列组合+多项式求逆 [题解]参考: [BZOJ4555][Tjoi2016& ...

  2. luogu P4725 多项式对数函数 (模板题、FFT、多项式求逆、求导和积分)

    手动博客搬家: 本文发表于20181125 13:25:03, 原地址https://blog.csdn.net/suncongbo/article/details/84487306 题目链接: ht ...

  3. hdu 5730 Shell Necklace [分治fft | 多项式求逆]

    hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治 ...

  4. BZOJ 4555: [Tjoi2016&Heoi2016]求和 [分治FFT 组合计数 | 多项式求逆]

    4555: [Tjoi2016&Heoi2016]求和 题意:求\[ \sum_{i=0}^n \sum_{j=0}^i S(i,j)\cdot 2^j\cdot j! \\ S是第二类斯特林 ...

  5. NTT+多项式求逆+多项式开方(BZOJ3625)

    定义多项式$h(x)$的每一项系数$h_i$,为i在c[1]~c[n]中的出现次数. 定义多项式$f(x)$的每一项系数$f_i$,为权值为i的方案数. 通过简单的分析我们可以发现:$f(x)=\fr ...

  6. Re.多项式求逆

    前言 emmm暂无 多项式求逆目的 顾名思义 就是求出一个多项式的摸xn时的逆 给定一个多项式F(x),请求出一个多项式G(x),满足F(x)∗G(x)≡1(modxn),系数对998244353取模 ...

  7. BZOJ 3456: 城市规划 与 多项式求逆算法介绍(多项式求逆, dp)

    题面 求有 \(n\) 个点的无向有标号连通图个数 . \((1 \le n \le 1.3 * 10^5)\) 题解 首先考虑 dp ... 直接算可行的方案数 , 容易算重复 . 我们用总方案数减 ...

  8. 洛谷P4841 城市规划(生成函数 多项式求逆)

    题意 链接 Sol Orz yyb 一开始想的是直接设\(f_i\)表示\(i\)个点的无向联通图个数,枚举最后一个联通块转移,发现有一种情况转移不到... 正解是先设\(g(n)\)表示\(n\)个 ...

  9. LOJ2527 HAOI2018 染色 容斥、生成函数、多项式求逆

    传送门 调了1h竟然是因为1004535809写成了998244353 "恰好有\(K\)种颜色出现了\(S\)次"的限制似乎并不容易达到,考虑容斥计算. 令\(c_j\)表示强制 ...

随机推荐

  1. SpringMVC 启动流程

    首先看一下Web应用部署初始化过程 (Web Application Deployement),官方文档说明: Web Application Deployment When a web applic ...

  2. WOW

    WOW http://bbs.ngacn.cc/read.php?tid=4992959  http://ngasave.us/popcn/?t=gems  地精科技:国服最流行 http://bbs ...

  3. git从远程分支clone项目到本地,切换分支命令,其他常用命令

    1.在git命令窗口输入git clone git@139.129.217.217:sg/sgsq_cms.git 回车,即可克隆远程项目到本地.红色字体为远程分支的SSHkey,可以登录到gitli ...

  4. JAVA算术运算符

    算术运算符 +.-.*(乘号)./(除号,取商).%(取余数.取模) 特殊的运算符:++(加加).--(减减) int  a = 1; a+=10;  等同于a=a+10; a-=5;   等同于a= ...

  5. C++ 50学习 之提高对 C++的认识

    转自Effective C++ 理解设计目标. 1.和 C 的兼容性. 2.效率. C++在效率上可以和 C 匹 敌 ---- 二者相差大约在 5%之内. 3.和传统开发工具及环境的兼容性. 4.解决 ...

  6. spring cloud 总结

    Finchley版本Spring Cloud Finchley; Spring Boot 2.0.3 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)(Fin ...

  7. Swagger注解

    swagger注解说明  1.与模型相关的注解,用在bean上面 @ApiModel:用在bean上,对模型类做注释: @ApiModelProperty:用在属性上,对属性做注释 2.与接口相关的注 ...

  8. Swagger使用

    Swagger 1.集成springboot 第一步:pom <dependency> <groupId>io.springfox</groupId> <ar ...

  9. 100-days: ten

    Title: Emma Watson(艾玛·沃森), Keira Knightley(凯拉·奈特莉) among stars(众多明星之一)  urging(竭力主张,呼吁某事) better pro ...

  10. Android 发送邮件以及定时发送邮件的实现

    本文以腾讯企业邮箱为例,展示如何发送邮件 及相关问题  选择腾讯企业邮箱是因为腾讯企业邮箱一般都是开启了smtp服务 项目地址:https://gitee.com/bimingcong/MySendE ...