單位根反演學習筆記

2022-09-10 17:42:11 字數 1786 閱讀 6720

存在式子

\[n\cdot [n|k]=\sum_^\omega_n^\\

\]我們考慮來證明一下,

若 \([n|k]=1\) ,那麼顯然 \(\omega_n^=1\) 。

若 \([n|k]\ne 1\) ,那麼後者就是乙個等比數列,我們運用求和公式 \(\frac-1}=0\) 。

我們可以利用這個式子提取出乙個多項式的整數倍係數。

\[\sum_^\rfloor}[x^]f(x)=\sum_^n[k|i][x^i]f(x)\\

=\sum_^n(\frac\sum_^\omega_k^)[x^i]f(x)\\

=\frac\sum_^\sum_^n\omega_k^\cdot [x^i]f(x)\\

=\frac\sum_^\sum_^n(\omega_k^)^i\cdot [x^i]f(x)\\

=\frac\sum_^f(w_k^j)\\\]求

\[\sum_^n(\binom\cdot s^i\cdot a_)\\

\]我們考慮由於 \(i\) 在不同位數下的取值與 \(\bmod 4\) 的值有關,所以我們想到單位根反演。所以我們先定義多項式並嘗試將其化簡。

\[f(x)=\sum_^nx^i\cdot\binom\cdot s^i=(xs+1)^n\\

\]然後我們考慮到單位根反演只能求整數倍,但是我們這裡還需要求存在餘數的情況,可以比較容易地想到平移。

\[\text=\frac\sum_^a_i\sum_^\frac}\\

\]尼瑪for迴圈寫錯調半天。

#includeusing namespace std;

const int mod=998244353,k=4,invk=748683265;

const int w[k]=;

const int _w[k]=;

int add(int x,int y)

int sub(int x,int y)

int time(int x,int y)

int ksm(int x,int k=mod-2)

long long n;int s,a[4],res;

int solve()

這個不會是什麼 \(k\) 元生成函式吧。。。

我們貌似可以得到這麼乙個奇怪的式子,

\[\text=\sum_^\sum_^\sum_^\cdots f(w_d^a,w_d^b,w_d^c,\cdots)\\

=\sum_^\sum_^\sum_^\cdots (w_d^a+w_d^b+w_d^c+\cdots)^n\\

\]

#includeusing namespace std;

const int k=500005;

const int mod=19491001,w2=19491000,w3=18827933;

int add(int x,int y)

int time(int x,int y)

int ksm(int x,int k=mod-2)

int n,k,d;

int fact[k],ifact[k];

void init()

int main()

return printf("%d\n",time(res,ksm(ksm(d),k))),0;

} if(d==3)

} return printf("%d\n",time(res,ksm(ksm(d),k))),0;

}}

單位根反演小記 - command_block 的部落格

學習筆記 單位根反演

n k frac sum omega 證明 首先根據單位根的性質 omega 1 所以當 n k 時每一項都等於 1 有 frac sum omega 1 當 n k 不成立時,omega k neq 1 等比數列求和得 frac sum omega frac times frac k 又因為 om...

單位根反演

定理 n mid a dfrac1n sum omega n 證明 使用等比數列求和 a 0 mod n 公比不為 1 原式 dfrac1n times dfrac 1 dfrac1n times dfrac 0 a 0 mod n 公比為 1 原式 dfrac1n times n times om...

Note 單位根反演 學習筆記

單位根反演,顧名思義就是用單位根變換一類式子的形式。有關單位根的基本概念可見我的這篇部落格。單位根反演的公式很簡單 k n frack sum omega k 分類討論 k n 那麼 forall i omega k 1 所以右側為 frack sum 1 1 k not n 等比數列求和,右側為 ...