多項式問題之六 多項式快速冪

2022-05-25 16:06:09 字數 1909 閱讀 7285

問題:已知乙個次數為$n-1$的多項式$f(x)$,求乙個多項式$g(x)$滿足$g(x)\equiv f(x)^$

這個...你需要多項式exp

直接推一發式子就可以了:

$g(x)\equiv f(x)^$

$g(x)\equiv e^}$

$g(x)\equiv e^$

這樣寫個多項式ln和多項式exp就可以了

#include #include 

#include

#include

#include

#include

#include

#include

#define ll long long

#define uint unsigned int

using

namespace

std;

const

uint mode=998244353

;uint ig[(1

<<20)+5],ff[(1

<<20)+5],lg[(1

<<20)+5],tg[(1

<<20)+5

];uint

n,k;

uint f[(1

<<20)+5],lf[(1

<<20)+5],g[(1

<<20)+5

];uint pow_mul(uint x,uint

y)

return

ret;

}uint mod(uint x,uint

y)uint to[(1

<<20)+5

];void ntt(uint *a,int len,int

k) }

}if(k==-1

)

}uint a[(1

<<20)+5],b[(1

<<20)+5],c[(1

<<20)+5

];void mul(uint *f,uint *g,int

len)

void get_inv(uint *f,uint *g,int

dep)

int nxt=(dep+1)>>1

; get_inv(f,g,nxt);

int lim=1,l=0

;

while(lim<=2*dep)lim<<=1,l++;

for(int i=0;i0,to[i]=((to[i>>1]>>1)|((i&1)<<(l-1

)));

for(int i=0;if[i];

for(int i=0;ig[i];

ntt(a,lim,

1),ntt(b,lim,1

);

for(int i=0;imode;

ntt(c,lim,-1

);

for(int i=0;i2*g[i]+mode-c[i])%mode;

}void get_ln(uint *f,uint *g,int

dep)

void get_exp(uint *f,uint *g,int

dep)

int nxt=(dep+1)>>1

; get_exp(f,g,nxt);

get_ln(g,lg,dep);

for(int i=0;imode;

tg[0]++;

mul(tg,g,dep);

for(int i=0;ic[i];

}template

inline void read(t &x)

while(ch>='

0'&&ch<='9')

x=c*f;

}int

main()

多項式問題之二 多項式除法

多項式求逆是多項式除法的基礎,如果你不會多項式求逆,請看這裡 問題 已知兩個多項式 f x 次數為n g x 次數為m 求兩個多項式 q x 與 r x 滿足 f x g x q x r x 所有運算在模998244353意義下進行 推一發式子 f x g x q x r x 用 frac 替代 x...

MATLAB多項式及多項式擬合

多項式均表示為陣列形式,陣列元素為多項式降冪係數 1.polyval函式 求多項式在某一點或某幾個點的值.p 1,1,1 x 2 x 1 x 1,0,1 y polyval p,x 另外求函式在某一點或某幾個點的值可以用函式feval.x 1,0,1 y feval x exp x x 注意用的乘法...

數學 多項式 多項式求逆

多項式求逆 前置知識 ntt 給定乙個多項式 f left x right 求乙個多項式 g left x right 使得 f left x right g left x right equiv 1 left bmod 998244353 right 考慮遞迴求解。假定現在已經求出了 g 0 le...