問題:已知乙個次數為$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...