題解:ntt、二項式定理
再逆fft求出係數ans[i],本題即可解了
另:採用fft的話,複數既不方便,誤差也很大。
從fft到ntt:
由費馬小定理可知 gp-1%p=1 (p為質數)
所以利用這個性質來對應單位複數根乘方的週期性,即
**:
#includeusing namespace std;typedef long long ll;
const ll mod=998244353;
const ll g=3;
ll kpow(ll a,ll k)
return res;
}void change(ll y,int len)
if(j
}}void fft(ll y,int len,int on)}}
if(on==-1)
}ll a[1<<20];
int main()
fft(a,(1<
ll res=0,buf=1;
for(int i=0;i
printf("%lld\n",res);
return 0;
}
Wannafly挑戰賽14 B 字典樹
題目描述 在乙個 minecraft 村莊中,村長有這一本小寫字母構成的名冊 字串的表 每個名字旁邊都記錄著這位村民的聲望值,而且有的村民還和別人同名。隨著時間的推移,因為沒有村民死亡,這個名冊變得十分大。現在需要您來幫忙維護這個名冊,支援下列 4 種操作 插入新人名 si,聲望為 ai 給定名字字...
Wannafly挑戰賽14 E 線性基
題目描述 給乙個1 base陣列,有n次操作,每次操作會使乙個位置無效。乙個區間的權值定義為這個區間裡選出一些數的異或和的最大值。求在每次操作前,所有不包含無效位置的區間的權值的最大值。輸入描述 第一行讀入乙個正整數 1 n 105 第二行讀入n個正整數,第i個表示a i 0 a i 109 第三行...
Wannafly挑戰賽A 概率DP
給你乙個長 n 的序列,m 次查詢 每次查詢給乙個 x,然後 從序列的最左端 1 開始,每次隨機的選擇乙個右端點 r,如果兩個端點間的區間和不超過 x 就進行一次分割,然後把左端點變成 r 1,否則一直隨機下去。問這樣分割出來的期望段數 第一行兩個數 n,m 之後一行 n 個數表示這個序列 之後m行...