传送门

题意

kkksc03 大神召唤方法:

金神石的块数必须是 6 的倍数。

木神石最多用 9 块。

水神石最多用 5 块。

火神石的块数必须是 4 的倍数。

土神石最多用 7 块。

lzn 大神召唤方法:

金神石的块数必须是 2 的倍数。

木神石最多用 1 块。

水神石的块数必须是 8 的倍数。

火神石的块数必须是 10 的倍数。

土神石最多用 3 块。

有多少种大阵对,前一个能召唤kkk,后一个能召唤lzn”


定理

11−x=1+x+x2+x3+x4.......\frac{1}{1-x}=1+x+x^2+x^3+x^4.......1−x1​=1+x+x2+x3+x4.......

1−x21−x=(1−x2)+(x−x3)+(x2−x3)......\frac{1-x^2}{1-x}=(1-x^2)+(x-x^3)+(x^2-x^3)......1−x1−x2​=(1−x2)+(x−x3)+(x2−x3)......

=(1+x+x2+x3.....)−(x2+x3.......)=1+x=(1+x+x^2+x^3.....)-(x^2+x^3.......)=1+x=(1+x+x2+x3.....)−(x2+x3.......)=1+x

对于前十个限制,按顺序他们的生成函数分别是

Ⅰ.1+x6+x12+x18+x24.......=11−x6Ⅰ.1+x^6+x^{12}+x^{18}+x^{24}.......=\frac{1}{1-x^6}Ⅰ.1+x6+x12+x18+x24.......=1−x61​

Ⅱ.1+x+x2+x3+x4+x5+x6+x7+x8+x9=(1−x10)1−xⅡ.1+x^+x^2+x^3+x^4+x^5+x^6+x^7+x^8+x^9=\frac{(1-x^{10})}{1-x}Ⅱ.1+x+x2+x3+x4+x5+x6+x7+x8+x9=1−x(1−x10)​

Ⅲ.1+x+x2+x3+x4+x5=(1−x6)1−xⅢ.1+x^+x^2+x^3+x^4+x^5=\frac{(1-x^{6})}{1-x}Ⅲ.1+x+x2+x3+x4+x5=1−x(1−x6)​

Ⅳ.1+x4+x8+x12+x16......=11−x4Ⅳ.1+x^4+x^8+x^{12}+x^{16}......=\frac{1}{1-x^4}Ⅳ.1+x4+x8+x12+x16......=1−x41​

Ⅴ.1+x+x2+x3+x4+x5+x6+x7=(1−x8)1−xⅤ.1+x^+x^2+x^3+x^4+x^5+x^6+x^7=\frac{(1-x^8)}{1-x}Ⅴ.1+x+x2+x3+x4+x5+x6+x7=1−x(1−x8)​

Ⅵ.1+x2+x4+x6+x8......=11−x2Ⅵ.1+x^2+x^4+x^6+x^8......=\frac{1}{1-x^2}Ⅵ.1+x2+x4+x6+x8......=1−x21​

Ⅶ.1+x=1−x21−xⅦ.1+x=\frac{1-x^2}{1-x}Ⅶ.1+x=1−x1−x2​

Ⅷ.1+x8+x16+x24+x32.......=11−x8Ⅷ.1+x^8+x^{16}+x^{24}+x^{32}.......=\frac{1}{1-x^8}Ⅷ.1+x8+x16+x24+x32.......=1−x81​

Ⅸ.1+x10+x20+x30+x40.......=11−x10Ⅸ.1+x^{10}+x^{20}+x^{30}+x^{40}.......=\frac{1}{1-x^{10}}Ⅸ.1+x10+x20+x30+x40.......=1−x101​

Ⅹ.1+x+x2+x3=(1−x4)1−xⅩ.1+x+x^2+x^3=\frac{(1-x^4)}{1-x}Ⅹ.1+x+x2+x3=1−x(1−x4)​

把上面十个式子都乘起来得到

(1−x10)(1−x6)(1−x8)(1−x2)(1−x4)(1−x6)(1−x)5(1−x4)(1−x2)(1−x8)(1−x10)\frac{(1-x^{10})(1-x^6)(1-x^8)(1-x^2)(1-x^4)}{(1-x^6)(1-x)^5(1-x^4)(1-x^2)(1-x^8)(1-x^{10})}(1−x6)(1−x)5(1−x4)(1−x2)(1−x8)(1−x10)(1−x10)(1−x6)(1−x8)(1−x2)(1−x4)​

上下约分得到

1(1−x)5=(1−x)−5\frac{1}{(1-x)^5}=(1-x)^{-5}(1−x)51​=(1−x)−5

使用广义二项式定理展开

(1−x)−5=∑i=0∞(5+i−1i)xi(1-x)^{-5}=\sum\limits_{i=0}^{\infty}{5+i-1 \choose i}x^i(1−x)−5=i=0∑∞​(i5+i−1​)xi

那么第nnn项的系数不就是xnx^nxn的系数吗???

答案不就是(4+nn){4+n \choose n}(n4+n​)吗

答案不就是(4+n4)=(4+n)(3+n)(2+n)(1+n)24{4+n \choose 4}=\frac{(4+n)(3+n)(2+n)(1+n)}{24}(44+n​)=24(4+n)(3+n)(2+n)(1+n)​

然后使用NTTNTTNTT加速高精度运算即可

注意每次NTTNTTNTT后都需要进位,不然每一位会大于模数,就是错的

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn = 4e6+10;
const int mod = 998244353,G=3,Gi=332748118;
int limit=1,n,l=0,r[maxn],a[maxn],b[maxn],c[maxn];
char s[maxn];
int quick(int x,int n)
{int ans = 1;for( ; n ; n>>=1, x=x*x%mod )if( n&1 )    ans = ans*x%mod;return ans;
}
void NTT(int *a,int type)
{for(int i=0;i<limit;i++)if( i<r[i] )  swap( a[i],a[r[i]] );for(int mid=1;mid<limit;mid<<=1){int wn = quick(type==1?G:Gi,(mod-1)/(mid<<1));for(int R=mid<<1,i=0;i<limit;i+=R)for(int k=0,w=1;k<mid;k++,w = w*wn%mod){int x = a[i+k], y = w*a[i+k+mid]%mod;a[i+k] = (x+y)%mod, a[i+k+mid] = (x-y+mod)%mod;}}
}
int nowa,nowb;
void mul(int *a,int *b,int lim)
{limit = 1, l = 0;while( limit<=lim ) limit<<=1,l++;for(int i=0;i<limit;i++)r[i] = ( r[i>>1]>>1 ) | ( (i&1)<<(l-1) );NTT(a,1); NTT(b,1);for(int i=0;i<limit;i++)  a[i] = a[i]*b[i]%mod;NTT(a,-1);int inv = quick(limit,mod-2);for(int i=0;i<=lim;i++)    a[i] = a[i]*inv%mod;for(int i=0;i<=nowa;i++){if( a[i]>=10 )a[i+1] += a[i]/10, a[i]%=10, nowa += (i==nowa);}for(int i=0;i<limit;i++)   b[i] = 0;
}
void add(int *c,int val,int *b)
{b[0] = b[0]+val; nowb = n-1;for(int i=0;i<=nowb;i++) {b[i] += c[i];if( b[i]>=10 )b[i+1] += b[i]/10, b[i] = b[i]%10, nowb += (i==nowb);}
}
signed main()
{scanf("%s",s);n = strlen( s );for(int i=0;i<n;i++)    c[i] = s[n-i-1]-'0';a[0] = 1;for(int i=1;i<=4;i++){add(c,i,b); nowa += nowb;mul(a,b,nowa);memset( b,0,sizeof b);}for(int i=0;i<=nowa;i++){if( a[i]>=10 )a[i+1] += a[i]/10, a[i]%=10, nowa += (i==nowa);}int ans = 0,flag=0;for(int i=nowa;i>=0;i--){a[i-1] += ( a[i]%24 )*10;a[i]/=24;if( a[i] || flag )  flag = 1,cout << a[i];}
}

P2000 拯救世界(生成函数裸题+NTT高精)相关推荐

  1. P2000 拯救世界

    P2000 拯救世界 题意: 为了拯救世界,小 a 和 uim 决定召唤出 kkksc03 大神和 lzn 大神.根据古籍记载,召唤出任何一位大神,都需要使用金木水火土五种五行神石来摆一个特定的大阵. ...

  2. P2012 拯救世界2(指数型生成函数)

    P2012 拯救世界2 三种基因,我们分别列出其生成函数: F(x)=∑n≥0xnn!=exG(x)=∑n≥0x2n+1(2n+1)!=12(∑n≥0xnn!−∑n≥0(−1)nxnn!)=12(ex ...

  3. python是最美的语言阅读答案_语文阅读题练习及答案:拯救世界上最美的语言

    语文阅读题练习及答案:拯救世界上最美的语言 ①在过去的一百年中,汉语和汉语写作饱经磨难.没有一种语言像中文那样,在这一百多年来经历了如此重大的变革.从晚清效仿日本明治维新的"言文一致&quo ...

  4. misc高阶 攻防世界_攻防世界 Misc 进阶题(一)

    攻防世界 Misc 进阶题(一) 关于隐写术的思路或方法 转载: https://blog.csdn.net/a_small_rabbit/article/details/79644078     隐 ...

  5. 最大流问题模板-java-蓝桥杯-算法训练-网络流裸题

    1. 本题相关资料 题目链接 这是一道求最大流的模板题. 最大流预备知识:dfs,bfs,图论基础(图的存储). 网上已经有很多最大流的解析,我就不再唠叨了,还不了解的同学可参考这个博客:什么是最大流 ...

  6. 你不是在拯救世界就是在拯救世界的路上

    你不是在拯救世界,就是在拯救世界的路上. 每一个后期上辈子都是折翼的天使,当你处于5楼或者10楼的时候,RD时你前面出现了四个折翼天使的时候,你就准备玩蛋去吧. 全场处于愤怒之中,四处追赶敌人并且屡次 ...

  7. 数学推导题,NTT,快速数论变换,Wannafly-乒乓球

    乒乓球 题目描述 小 BoBoBo 是某省乒乓球名列前茅的选手,现在他有 nnn 颗乒乓球一字排开,第iii颗乒乓球的权值为 wiw_iwi​ 每次他会随机从现有的乒乓球中等概率选一颗拿走,然后得到的 ...

  8. 攻防世界 crypto 入门题之easy_RSA

    攻防世界 crypto 入门题之easy_RSA 继续开启全栈梦想之逆向之旅~ 这题是攻防世界crypto 入门题之easy_RSA RSA的密码学听说了好久,主要是战队的队友之前有研究,而我却是一点 ...

  9. 攻防世界逆向高手题之EasyRE

    攻防世界逆向高手题之EasyRE 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的EasyRE 下载附件,照例扔入exeinfope中查看信息: 64位ELF文件,无壳,照例扔入IDA64中查 ...

  10. 困于二手电商打转,转转拿什么“拯救世界”?

    "双碳"战略下,转转集团也加入了,从数据上来看做得还可以. 都知道,近期转转集团试图向市场讲新故事.11月7日,转转集团在北京举办了品牌升级发布会,会上宣布其不再是一家互联网电商公 ...

最新文章

  1. 关于const 修饰的一些知识
  2. vue 组件属性监听_Vue.js 监听属性
  3. 【干货】接地气的产品设计流程
  4. ActiveMQ的自定义安全插件(十)
  5. 手机来电秀怎么开启_360手机卫士怎么设置来电秀 360手机卫士来电秀设置方法...
  6. Python lambda函数
  7. Hive UDAF开发
  8. MOSS 2007 系列学习之安装篇(一)
  9. 向“3+1” SQLServer2008集群增加磁盘
  10. Mac 下安装RabbitMQ及配置RabbitMQ可远程访问
  11. 深度学习|三维重建:R-MVSNet
  12. angular遇到问题
  13. 总结——pandas/numpy处理数据中文手册速查
  14. 梅林系统软件无法安装解决方法
  15. Intel CPU参数查询网站
  16. 洛谷P4563 [JXOI2018]守卫
  17. 作为一个it码农一天不学习你会不会觉得心里不安
  18. 大数据学习之一——Hadoop单机部署
  19. 最后三天!当当网3折购书优惠码限时抢
  20. MobaXterm - 远程连接工具

热门文章

  1. 学员管理系统(面向对象版)
  2. 原生安卓开发!最详细的解释小白也能听懂,全网独家首发!
  3. Ubuntu20.04 搭建repo + gitlab的代码管理系统
  4. Android 快速集成文档校正能力 超简单
  5. openwrt 无线基础知识介绍
  6. pyecharts根据经纬度画动态散点地图
  7. 天文竞赛怎么用计算机,师范生教学技能大赛!计算机设计大赛!主持礼仪风采大赛!天文台活动预告!民宿企划竞赛!舞蹈大赛!...
  8. 软考网络规划设计师知识点总结--第一章(计算机网络概论)
  9. 解决IDEA打断点后,执行代码不会停在断点问题
  10. 使用Go语言开发生成阿里云ECS监控报表,定时自动发送邮件给指定人员