首页 > 其他分享 >多项式

多项式

时间:2024-01-29 18:12:01浏览次数:26  
标签:int 多项式 void len MAX inline

很多证明需要用到积分知识,所以只有结论和代码

一、多项式求导

$F'(x)=\sum_{i=0}a_{i+1}\times (i+1)x $

点击查看代码
inline void dao(int *g,int *f){
    for(int i=0;i<n;++i)  g[i]=f[i+1]*(i+1)%mod;
}

二、多项式求积分

求导逆运算

$F'(x)=\sum_{i=1}a_{i-1}\times \frac{1}{i}x $

点击查看代码
inline void jifen(int *g,int *f){
    for(int i=1;i<=n;++i)  g[i]=f[i-1]*power(i,mod-2)%mod;
}

三、多项式求逆

不取模

点击查看代码
void ni(int len){
    if(len==1){g[0]=power(f[0],mod-2);return;}
    solve(len>>1);work(len);
	for(int i=0;i<len;i++) a[i]=f[i],b[i]=g[i];
	for(int i=len;i<bl;i++) a[i]=b[i]=0; NTT(a,bl,1);NTT(b,bl,1);
	for(int i=0;i<bl;i++) a[i]=1ll*a[i]*b[i]%mod*b[i]%mod; NTT(a,bl,-1);
	for(int i=0;i<len;i++) g[i]=((2ll*g[i]%mod-a[i])%mod+mod)%mod;
}

四、多项式求ln

求导后积分

点击查看代码
#include<bits/stdc++.h>
using namespace std;
const int MAX=6e5+10;
#define int long long
const int mod=998244353,G=3;
int n,m=1,bl,bc,rev[MAX],a[MAX],b[MAX],f[MAX],g[MAX],g2[MAX];
inline int read(){
	int x=0,f=1;char c=getchar();
	while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^'0');c=getchar();}
	return x*f;
}
inline int power(int a,int b){
    int res=1;
    while(b){
        if(b&1)  res=res*a%mod;
        a=a*a%mod;b>>=1;
    }return res;
}inline void NTT(int*,int,int);
void solve(int);
inline void work(int len){
    bl=1;bc=0;
    while(bl<=len)  bl<<=1,++bc;
    for(int i=0;i<bl;++i)
        rev[i]=(rev[i>>1]>>1)|((i&1)<<bc-1);
}
inline void dao(int *g,int *f){
    for(int i=0;i<n;++i)  g[i]=f[i+1]*(i+1)%mod;
}inline void jifen(int *g,int n){
    for(int i=n;i;--i)  g[i]=g[i-1]*power(i,mod-2)%mod;
    g[0]=0;
}
signed main(){ 
    n=read();
    for(int i=0;i<n;++i)  f[i]=read();
    while(m<=n)  m<<=1;
    solve(m);work(n<<1);dao(g2,f);
    //g=invf  g2=f'
    NTT(g,bl,1);NTT(g2,bl,1);
    for(int i=0;i<bl;++i)  g[i]=g[i]*g2[i]%mod;
    NTT(g,bl,-1);
    //g=lnf'
    jifen(g,bl);
    for(int i=0;i<n;++i)  printf("%lld ",g[i]);
}
void solve(int len){
    if(len==1){g[0]=power(f[0],mod-2);return;}
    solve(len>>1);work(len);
	for(int i=0;i<len;i++) a[i]=f[i],b[i]=g[i];
	for(int i=len;i<bl;i++) a[i]=b[i]=0; NTT(a,bl,1);NTT(b,bl,1);
	for(int i=0;i<bl;i++) a[i]=1ll*a[i]*b[i]%mod*b[i]%mod; NTT(a,bl,-1);
	for(int i=0;i<len;i++) g[i]=((2ll*g[i]%mod-a[i])%mod+mod)%mod;
}inline void NTT(int *a,int n,int op){
    for(int i=0;i<n;++i)
        if(i<rev[i])  swap(a[i],a[rev[i]]);
    for(int i=1;i<n;i<<=1){
        int wn=power(G,(op*(mod-1)/(i<<1)+mod-1)%(mod-1));
        for(int j=0;j<n;j+=i<<1){
            int w=1;
            for(int k=0;k<i;++k){
                int x=a[j+k],y=a[j+k+i]*w%mod;
                a[j+k]=(x+y)%mod;a[j+k+i]=(x-y+mod)%mod;
                w=w*wn%mod;
            }
        }
    }if(op==-1){
        int inv=power(n,mod-2);
        for(int i=0;i<n;++i)  a[i]=a[i]*inv%mod;
    }
}

一、多项式求导

标签:int,多项式,void,len,MAX,inline
From: https://www.cnblogs.com/yswn/p/17994847

相关文章

  • 【模板】多项式半家桶 version 2
    #include<bits/stdc++.h>usingnamespacestd;#ifdefLOCAL#definedebug(...)fprintf(stderr,##__VA_ARGS__)#else#defineendl"\n"#definedebug(...)void(0)#endiftypedeflonglongLL;template<unsignedumod>structmodint{......
  • 我的多项式全家桶
    第一个自己实现的多项式全家桶。打比赛时终于有板子了!代码是从之前学转置原理的那篇博客里升级来的。但是功能很残?效率很逊?接口很怪?评价是能用就行。目前封装了:乘、逆、除(取模)、开方(无二次剩余,不会qwq)、对数、指数、多点求值、快速插值、常系数齐次线性递推、Berlekamp-Massey......
  • 无涯教程-MATLAB - 多项式(Polynomials)
    MATLAB将多项式表示为行向量,其中包含按降序排序的系数。例如,方程P(x)=x4+7x3-5x+9可以表示为-p=[170-59];判断多项式polyval函数用于以指定值判断多项式。例如,要判断我们先前的多项式p,在x=4处,键入-p=[170-59];polyval(p,4)MATLAB执行上述语句并返......
  • 洛谷题单指南-模拟和高精度-P1067 [NOIP2009 普及组] 多项式输出
    原题链接:https://www.luogu.com.cn/problem/P1067题意解读:模拟法依次输出多项式内容即可,但是需要考虑的周全,主要有以下关键点:1、系数为0时不输出多项式2、第一个符号,只有负号才输出3、次数不为0时,不输出为1的系数;次数为0时,输出所有系数4、次数为1时,不输出次数;次数为0时不输......
  • 一些多项式常用操作的公式推导
    怕我以后忘记了看不懂自己的板子(((牛顿迭代用于求解函数零点的近似值。设函数\(f(x)\)的零点近似值为\(x_0\),过点\((x_0,f(x_0))\)作\(f(x)\)的切线,切线与\(x\)轴交点的横坐标即为新的近似值。切线解析式为\(y=f'(x_0)(x-x_0)+f(x_0)\),当\(y=0\)时\(x=x_0-\dfrac{f......
  • 多项式相关
    板子:1constintN=4e5+5;23structNTT{4constintmod=998244353,G=3,invG=332748118;5intrev[N],res[N],Inv[N],Res[N],eres[N],Eres[N];67voidpreinv(intn){8Inv[0]=Inv[1]=1;9......
  • 多项式计数杂谈
    多项式计数杂谈-command_block的博客-洛谷博客command_block的博客导航切换首页文章command_block的博客多项式计数杂谈postedon2020-02-1118:16:01|under算法|Ox00.前面的话&前置芝士本文Markd......
  • 多项式求值软件下载Polynomial evaluation software mus 2025 download
    本软件是Windows下64位软件。本软件能计算如a0+a1*x+a2*x^2+......+an*x^n的式子的对b1的求值结果。具体的方法就是在多多项式系数区输入a0到an的值,然后点击计算多项式的结果即可在结果栏算出结果。最大项数为1000项。多项式系数输入时1项1行,从上到下是a0到an,中间不能空行。T......
  • 切比雪夫多项式
    切比雪夫多项式通常我们使用切比雪夫多项式时都在范围[-1,1]之间。定义切比雪夫多项式在[-1,1]上的定义是:\(T_n(x)=cos(narccos(x)),-1\leqx\leq1\),其中,T_n(x)是阶数为n的切比雪夫多项式。性质\(T_n(x)\)是n阶多项式。\(T_n(x)\)的奇偶性和n的奇偶性一致。\(T_n(x)\)在区......
  • 多项式基础
    FFT/NTT板子,就不说了。分治FFT给定序列\(g_{1\dotsn-1}\),求序列\(f_{0\dotsn-1}\)。其中\(f_i=\sum_{j=1}^if_{i-j}g_j\),边界为\(f_0=1\)。Solution1朴素地做是\(\mathcal{O}(n^2)\)的。观察到后面的项依赖前面的项。于是我们可以考虑用cdq分治实现。具体......