首页 > 其他分享 >poly模板

poly模板

时间:2024-02-22 20:56:32浏览次数:24  
标签:Fu int poly 1ll ans mul 模板 mod

多项式全家桶

#include<bits/stdc++.h>
#define Fu(i,a,b) for(register int i=a;i<=b;i++)
#define Fd(i,a,b) for(int i=a;i>=b;i--)
#define mod 998244353 
using namespace std;
int ksm(int a,int k){
	int ans=1;
	while(k){
		if(k&1) ans=1ll*ans*a%mod;
		a=1ll*a*a%mod,k>>=1;
	}return ans;
}
const int N=4*1e5+5;
int rev[N],g=3,gi=ksm(3,mod-2);
void ntt(int n,int *a,int inv){
	Fu(i,0,n) if(i<rev[i]) swap(a[i],a[rev[i]]);
	for(int len=1;len<n;len<<=1){
		int wn=ksm(inv?g:gi,(mod-1)/(len<<1));
		for(int i=0;i<n;i+=len<<1){
			int w0=1;
			Fu(j,0,len-1){
				int x=a[i+j],y=1ll*w0*a[i+j+len]%mod;
				a[i+j]=(x+y)%mod,a[i+j+len]=(x-y+mod)%mod,w0=1ll*w0*wn%mod;
			}
		}
	}
}
int c[N];
void mul(int *a,int *b,int n){
	int len=1,bit=0;
	while(len<2*n) len<<=1,bit++;
	Fu(i,0,len) rev[i]=(rev[i>>1]>>1)|((i&1)<<bit-1),c[i]=i<n?b[i]:0;
	ntt(len,a,1),ntt(len,c,1);
	Fu(i,0,len) a[i]=1ll*a[i]*c[i]%mod;
	ntt(len,a,0);
	Fu(i,0,len) a[i]=i<n?1ll*a[i]*ksm(len,mod-2)%mod:0;
}
void inv(int *a,int *b,int n){
	if(n==1){
		a[0]=ksm(b[0],mod-2);
		return ;
	}inv(a,b,n+1>>1);
	int len=1,bit=0;
	while(len<2*n) len<<=1,bit++;
	Fu(i,0,len) rev[i]=(rev[i>>1]>>1)|((i&1)<<bit-1),c[i]=i<n?b[i]:0;
	ntt(len,a,1),ntt(len,c,1);
	Fu(i,0,len) a[i]=1ll*a[i]*(2ll-1ll*a[i]*c[i]%mod+mod)%mod;
	ntt(len,a,0);
	Fu(i,0,len) a[i]=i<n?1ll*a[i]*ksm(len,mod-2)%mod:0;
}
int inv2=ksm(2,mod-2),d[N];
void sqr(int *a,int *b,int n){
	if(n==1){
		a[0]=1;
		return ;
	}sqr(a,b,n+1>>1);
	Fu(i,0,n) d[i]=0;
	inv(d,a,n),mul(a,a,n);
	Fu(i,0,n) a[i]=1ll*inv2*(a[i]+b[i])%mod; 
	mul(a,d,n);
}
void ln(int *a,int *b,int n){
	memset(d,0,sizeof(d));
	inv(d,b,n);
	Fu(i,1,n-1) a[i-1]=1ll*b[i]*i%mod;
	a[n-1]=0;
	mul(a,d,n);
	Fd(i,n-1,1) a[i]=1ll*a[i-1]*ksm(i,mod-2)%mod;
	a[0]=0;
}
int e[N];
void exp(int *a,int *b,int n){
	if(n==1){
		a[0]=1;
		return ;
	}exp(a,b,n+1>>1); 
	ln(e,a,n);
	Fu(i,0,n-1) e[i]=(b[i]-e[i]+mod)%mod;
	e[0]++;
	mul(a,e,n);
}
int n,m,a[N],b[N];
int main(){
	return 0;
}

标签:Fu,int,poly,1ll,ans,mul,模板,mod
From: https://www.cnblogs.com/zhy114514/p/18024043

相关文章

  • 我的模板
    StringsHashtemplate<intN>structStringHashing{chars[N];i64mod[2]={1610612741ll,805306457ll};i64pw[N][2];i64w[N][2];voidinit(intm){pw[0][0]=pw[0][1]=1;for(inti=1;i<=m;++i){pw[i][0]=......
  • 模拟退火模板
    模拟退火模板#include<bits/stdc++.h>#defineMAX_TIME0.9//时间限制(s)#defineFu(i,a,b)for(registerinti=(a);i<=(b);i++)usingnamespacestd;doubleRand(){return1.0*rand()/RAND_MAX;}intcalc(intz,ints[605],intx){//计算差值 if(ans<=)//更新按时......
  • 线段树模板
    向上回溯voidpushup(intrt){ t[rt].sum+=t[lc].sum+t[rc].sum; t[rt].mx=max(t[lc].mx,t[rc].mx);}建树voidbuild(intrt,intl,intr){ t[rt].l=l; t[rt].r=r; if(l==r){ t[rt].mx=t[rt].sum=a[l]; return; } intmid=(l+r)>>1......
  • DFS算法模板(2488:A Knight's Journey)
    DFS算法(C++版本)题目一:链接:http://bailian.openjudge.cn/practice/2488/解析思路:骑士找路就是基本的DFS,用递归不断找到合适的路,找不到就回头直到找到合适的路。该题难点:要是实现字典序,也就是同样的两种选择,要走到A1而不是B1。所以就有了{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1......
  • 回溯算法模板 & 78子集代码
     voidbacktracking(参数){   if(终止条件){       存放结果;       return;   }   for(选择:本层集合中元素(树中节点孩子的数量就是集合的大小)){       处理节点;       backtracking(路径,选择列表);//递归       ......
  • 网络最大流(模板)
    不加弧优化#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;constintN=10005;intn,m,s,t;structedge{intv,nxt,val;}e[N*2];inthead[N],cnt=1;intdis[N];intmaxflow;voidadd(intu,intv,intval){ e[++cnt].val=va......
  • 清新简蓝响应式网站模板Traveler
    清新简蓝响应式网站模板Traveler适合做个人博客自媒体类站点,可以做技术类,分享心情类文章博客,界面简洁,实用,利seo排名优化。首页采用无限加载更多文章,效果很酷。traveler模板主题在更大的程度上照顾每个人的需求,菜单、首页每个栏目、侧栏小工具都可以自主开启关闭,只需在后......
  • 模板匹配里的一些数学原理
    模板匹配里的一些数学原理我们知道,在openCV里,模板匹配中匹配度的计算公式有三类。SQDIFF、CCORR、CCOEFF。下面我们来简单介绍一下这三类计算方法,并比较其不同之处。openCV里的模板匹配SQDIFFSQDIFF全称SumofSquaredDifference(SSD),即差的平方和。其离散形式为:\[E(\v......
  • vue3项目模板:新建一个vite+vue3项目,并做基础化建设
    原文地址:https://blog.csdn.net/weixin_43239880/article/details/130355138新建一个vite+vue3项目,并做基础化建设1.使用npmcreatvite@latest新建一个vue3项目2.生成git仓库3.将prettier的规则加入到eslint中(可选操作,建议有)4.添加commitLint(可选操作,建议有)5.加入UI组件库,以ele......
  • python 爬虫模板
    前言在我们写爬虫的时候,一般想要的数据都在详情页里面,一般代码进入详情页参数,需要首页里面寻找,所以爬这样的网站,需要定义一个模板我的模板如下: importrandomimporttimeimportrequestsfromauctionimportlogtoolfromauction.BaseCrawlerimportBaseCrawlercla......