bzoj 4555: [Tjoi2016&Heoi2016]求和【NTT】
暴力推式子推诚卷积形式,但是看好多blog说多项式求逆不知道是啥..
\]
\]
\]
\]
\]
\]
\]
设
\]
\]
于是就得到了卷积形式,可以上NTT了
顺便根据等比数列求和公式,\(\sum_{i=0}{i}kn=\frac{k^{n+1}-1}{k-1} \)
#include<iostream>
#include<cstdio>
using namespace std;
const int N=300005,mod=998244353,G=3;
int n,fac[N],inv[N],fi[N],a[N],b[N],re[N],lm,bt,ans;
int ksm(int a,int b)
{
	int r=1;
	while(b)
	{
		if(b&1)
			r=1ll*r*a%mod;
		a=1ll*a*a%mod;
		b>>=1;
	}
	return r;
}
void dft(int a[],int f)
{
	for(int i=0;i<lm;i++)
		if(i<re[i])
			swap(a[i],a[re[i]]);
	for(int i=1;i<lm;i<<=1)
	{
		int wi=ksm(G,(mod-1)/(i<<1));
		if(f==-1)
			wi=ksm(wi,mod-2);
		for(int k=0;k<lm;k+=(i<<1))
		{
			int w=1,x,y;
			for(int j=0;j<i;j++)
			{
				x=a[j+k];
				y=1ll*w*a[i+j+k]%mod;
				a[j+k]=((x+y)%mod+mod)%mod;
				a[i+j+k]=((x-y)%mod+mod)%mod;
				w=1ll*w*wi%mod;
			}
		}
	}
	if(f==-1)
	{
		int ni=ksm(lm,mod-2);
		for(int i=0;i<lm;i++)
			a[i]=1ll*a[i]*ni%mod;
	}
}
void ntt()
{
	bt=1;
	for(;(1<<bt)<=2*n;bt++);
	lm=(1<<bt);
	for(int i=0;i<=lm;i++)
		re[i]=(re[i>>1]>>1)|((i&1)<<(bt-1));
	dft(a,1);
	dft(b,1);
	for(int i=0;i<lm;i++)
		a[i]=1ll*a[i]*b[i]%mod;
	dft(a,-1);
}
int main()
{
	scanf("%d",&n);
	inv[1]=1,fac[0]=fi[0]=1;
	for(int i=1;i<=n;i++)
	{
		if(i!=1)
			inv[i]=1ll*(mod-mod/i)*inv[mod%i]%mod;
		fac[i]=1ll*fac[i-1]*i%mod;
		fi[i]=fi[i-1]*inv[i]%mod;
	}
	a[0]=1;
	for(int i=1;i<=n;i++)
		a[i]=((i&1)?-1:1)*fi[i];
	b[0]=1,b[1]=n+1;
	for(int i=2;i<=n;i++)
		b[i]=1ll*(ksm(i,n+1)-1)*inv[i-1]%mod*fi[i]%mod;
	ntt();
	for(int i=0;i<=n;i++)
		ans=(ans+1ll*fac[i]*ksm(2,i)%mod*a[i]%mod)%mod;
	printf("%d",(ans%mod+mod)%mod);
	return 0;
}
bzoj 4555: [Tjoi2016&Heoi2016]求和【NTT】的更多相关文章
- bzoj 4555  [Tjoi2016&Heoi2016]求和 NTT 第二类斯特林数 等比数列求和优化
		[Tjoi2016&Heoi2016]求和 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 679 Solved: 534[Submit][S ... 
- BZOJ 4555: [Tjoi2016&Heoi2016]求和 (NTT + 第二类斯特林数)
		题意 给你一个数 \(n\) 求这样一个函数的值 : \[\displaystyle f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i} \begin{Bmatrix} i \\ j ... 
- bzoj 4555 [Tjoi2016&Heoi2016]求和——NTT+第二类斯特林数
		题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 第二类斯特林数展开式: \( S(i,j) = \frac{1}{j!} \sum\l ... 
- 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是第二类斯特林 ... 
- 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是第二类斯特林 ... 
- [BZOJ 4555][Tjoi2016&Heoi2016]求和
		题意 给定 $n$ , 求下式的值: $$ f(n)= \sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\ j\end{Bmatrix}\times 2^j\time ... 
- bzoj 4555 [Tjoi2016&Heoi2016] 求和 —— 第二类斯特林数+NTT
		题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4555 关于第二类斯特林数:https://www.cnblogs.com/Wuweizhen ... 
- BZOJ 4555:[TJOI2016&HEOI2016]求和(第二类斯特林数+NTT)
		题目链接 \(Description\) 求 \[\sum_{i=0}^n\sum_{j=0}^iS(i,j)2^jj!\]对998244353取模后的结果. \(n<=10^5\) \(Sol ... 
- BZOJ 4555 [Tjoi2016&Heoi2016]求和 ——分治 NTT 多项式求逆
		不想多说了,看网上的题解吧,我大概说下思路. 首先考察Stirling的意义,然后求出递推式,变成卷积的形式. 然后发现贡献是一定的,我们可以分治+NTT. 也可以直接求逆(我不会啊啊啊啊啊) #in ... 
随机推荐
- makefile的语法及写法
			什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要 ... 
- Linux后台运行命令nohub输出pid到文件(转)
			用nohup可以启动一个后台进程.让一个占用前台的程序在后台运行,并静默输出日志到文件: nohup command > logfile.txt & 但是如果需要结束这个进程,一般做法是 ... 
- MySQL查询count(*)、count(1)、count(field)的区别收集
			经过查询研究得出这个和MySQL中用什么引擎有关,比如InnoDB和MyISAM在处理这count(*).count(1).count(field)都有不同的方式,还有就是和版本都有关系,不同的版本会 ... 
- 使用Spring定时任务并且通过AOP监控任务执行情况
			原文:http://www.open-open.com/code/view/1426250803279 本文讲的是通过Spring注解的方式实现任务调度.只要引入了spring-context包就能够 ... 
- chrome插件vimium的安装和使用
			vimium工具的作用:使你脱离鼠标,使用键盘方便操作页面,默认对所有网站生效 1.chrome商店里有的,但是,我怎么安装,都不行 2.源码安装:http://vimium.github.io/ h ... 
- 【APUE】进程间通信之信号量
			信号量是一个计数器,用于多进程对共享数据对象的访问 为了获得共享资源,进程需要执行下列操作: 1)测试控制该资源的信号量 2)若此信号量为正,则进程可以使用该资源,进程将信号量减1,表示它使用了一个资 ... 
- Linux 修改终端命令提示符颜色
			相信很多人已经看厌了Linux已成不变的命令提示符的颜色,多数人要么使用默认的绿色,要么在使用PUTTY的时候设置成绿色的,不知道是否有人想到提示符可以设置成其他的颜色呢,本文就说明命令提示符变量PS ... 
- No module named '_sqlite3'问题解决
			Centos自带的python版本是2.7的,后面我自己装了3.5版本的,在创建应用的时候python manager.py startapp users 时,就会报No module named ' ... 
- 读书笔记-HBase in Action-第三部分应用-(2)GIS系统
			本章介绍用HBase存储.高效查询地理位置信息. Geohash空间索引 考虑LBS应用中常见的两个问题:1)查找离某地近期的k个地点.2)查找某区域内地点. 假设要用HBase实现高效查找,首先要考 ... 
- composer-安装插件包
			上一步完成后,选定国内镜像地址,以为下载插件包做准备 https://pkg.phpcomposer.com/ 安装完componser后使用下面这条命令即可(设置国内镜像地址): composer ... 
