日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[学习笔记] 单位根反演

發布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [学习笔记] 单位根反演 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

單位根反演

[k∣n]=1k∑i=0k?1ωkin[k\mid n]=\frac 1k\sum_{i=0}^{k-1}\omega_k^{in}[kn]=k1?i=0k?1?ωkin?

kkk 次單位根是 kkk 次冪為 111 的復數解 wkw_kwk?。利用單位圓和單位根的關系很容易證明。

  • k∣nk\mid nkn

    顯然 ωkin\omega_k^{in}ωkin?,相當于轉了 ink\frac{in}kkin? 圈單位圓,結果仍是 111

    1k∑i=0k?11=1=k∣n\frac 1k\sum_{i=0}^{k-1}1=1=k\mid nk1?i=0k?1?1=1=kn

  • k?nk\nmid nk?n

    使用等比數列求和。

    [k∣n]=1k∑i=0k?1ωkin=1k?ωknk?1ωkn?1[k\mid n]=\frac 1k\sum_{i=0}^{k-1}\omega_k^{in}=\frac 1k·\frac{\omega_k^{nk}-1}{\omega_k^n-1}[kn]=k1?i=0k?1?ωkin?=k1??ωkn??1ωknk??1?

    ∵ωknk?1=ωk0?1=0∧ωkn?1≠0\because\omega_k^{nk}-1=\omega_k^0-1=0\wedge \omega_k^n-1\neq 0ωknk??1=ωk0??1=0ωkn??1?=0

    ∴1k∑i=0k?1ωkin=0=[k∣n]=k?n\therefore \frac 1k\sum_{i=0}^{k-1}\omega_k^{in}=0=[k\mid n]=k\nmid nk1?i=0k?1?ωkin?=0=[kn]=k?n

LOJ6485. LJJ學二項式定理

TTT 組數據,給定 n,s,a0,a1,a2,a3n,s,a_0,a_1,a_2,a_3n,s,a0?,a1?,a2?,a3?,求 ∑i=0nC(n,i)?si?ai(mod4)\sum_{i=0}^nC(n,i)·s^i·a_{i\pmod 4}i=0n?C(n,i)?si?ai(mod4)?。結果對 998244353998244353998244353 取模。

趁熱打鐵,我們很容易想到將 iii 按模 444 的余數進行分類。對于每一類我們只想統計該統計的數。
∑i=0n(ni)si∑j=03aj[imod?4=j]=∑i=0n(ni)si∑j=03aj[4∣(i?j)]\sum_{i=0}^n\binom nis^i\sum_{j=0}^3a_j[i\ \text{mod}\ 4=j]=\sum_{i=0}^n\binom nis^i\sum_{j=0}^3a_j[4\mid(i-j)] i=0n?(in?)sij=03?aj?[i?mod?4=j]=i=0n?(in?)sij=03?aj?[4(i?j)]
直接單位根反演:[4∣(i?j)]=14∑k=03ω4k(i?j)[4|(i-j)]=\frac{1}{4}\sum_{k=0}^3\omega_{4}^{k(i-j)}[4(i?j)]=41?k=03?ω4k(i?j)?
?∑i=0n(ni)si?14∑j=03aj?∑k=03ω4kiω4?kj=14∑j=03aj∑k=03ω4?kj∑i=0n(ni)siω4ki\Rightarrow \sum_{i=0}^n\binom nis^i·\frac 14\sum_{j=0}^3a_j·\sum_{k=0}^3\omega_4^{ki}\omega_4^{-kj}=\frac 14\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-kj}\sum_{i=0}^n\binom nis^i\omega_4^{ki} ?i=0n?(in?)si?41?j=03?aj??k=03?ω4ki?ω4?kj?=41?j=03?aj?k=03?ω4?kj?i=0n?(in?)siω4ki?
二項式定理:∑i=0n(ni)siω4ki=∑i=0n(ni)(sω4k)i=(sω4k+1)n\sum_{i=0}^n\binom nis^i\omega_4^{ki}=\sum_{i=0}^n\binom ni(s\omega_4^k)^i=(s\omega_4^k+1)^ni=0n?(in?)siω4ki?=i=0n?(in?)(sω4k?)i=(sω4k?+1)n
?14∑j=03aj∑k=03ω4?jk(sω4k+1)n\Rightarrow \frac 14\sum_{j=0}^3a_j\sum_{k=0}^3\omega_4^{-jk}(s\omega_4^k+1)^n ?41?j=03?aj?k=03?ω4?jk?(sω4k?+1)n
998244353998244353998244353 意義下是有四次單位根的,且原根為 333,有 ω41=g(mod?1)/4\omega_4^1=g^{(mod-1)/4}ω41?=g(mod?1)/4

直接算即可。

#include <bits/stdc++.h> using namespace std; #define int long long #define mod 998244353 int T, n, s; int a[10], w[10] = { 1, 911660635, 998244352, 86583718 };int qkpow( int x, int y ) {int ans = 1;while( y ) {if( y & 1 ) ans = ans * x % mod;x = x * x % mod;y >>= 1;}return ans; }signed main() {scanf( "%lld", &T );while( T -- ) {scanf( "%lld %lld", &n, &s );for( int i = 0;i < 4;i ++ ) scanf( "%lld", &a[i] );int ans = 0;for( int i = 0;i < 4;i ++ ) {int sum = 0;for( int j = 0;j < 4;j ++ )( sum += w[(4 - i) * j % 4] * qkpow( s * w[j] % mod + 1, n ) ) %= mod;( ans += sum * a[i] ) %= mod;}printf( "%lld\n", ans * qkpow( 4, mod - 2 ) % mod );}return 0; } /* 6 1 2 3 4 5 6 2 3 4 5 6 1 3 4 5 6 1 2 4 5 6 1 2 3 5 6 1 2 3 4 6 1 2 3 4 5 */ 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的[学习笔记] 单位根反演的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。