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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P5591-小猪佩奇学数学【单位根反演】

發(fā)布時(shí)間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P5591-小猪佩奇学数学【单位根反演】 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

正題

題目鏈接:https://www.luogu.com.cn/problem/P5591


題目大意

給出n,p,kn,p,kn,p,k
(∑i=0n(ni)pi?ik?)mod998244353\left(\sum_{i=0}^n\binom{n}{i}p^i\left\lfloor\frac{i}{k}\right\rfloor \right)\mod 998244353(i=0n?(in?)pi?ki??)mod998244353

1≤n,p<998244353,k=2w(w∈[0,20])1\leq n,p<998244353,k=2^w(w\in[0,20])1n,p<998244353,k=2w(w[0,20])


解題思路

開始以為推錯(cuò)了,結(jié)果是要特判
推出了看上去不是我能推的式子

∑i=1n(ni)pi∑j=1i[k∣j]\sum_{i=1}^n\binom{n}{i}p^i\sum_{j=1}^i[k|j]i=1n?(in?)pij=1i?[kj]
然后單位根反演
∑i=1n(ni)pi∑j=1i1k∑l=0k?1ωkl×j\sum_{i=1}^n\binom{n}{i}p^i\sum_{j=1}^i\frac{1}{k}\sum_{l=0}^{k-1}\omega_k^{l\times j}i=1n?(in?)pij=1i?k1?l=0k?1?ωkl×j?
系統(tǒng)整理一下
1k∑l=0k?1∑i=1n(ni)pi∑j=1iωkl×j\frac{1}{k}\sum_{l=0}^{k-1}\sum_{i=1}^n\binom{n}{i}p^i\sum_{j=1}^i\omega_k^{l\times j}k1?l=0k?1?i=1n?(in?)pij=1i?ωkl×j?
然后等比數(shù)列通項(xiàng)公式拆開
1k∑l=0k?1∑i=1n(ni)piωkl?ωkliωkl1?ωkl\frac{1}{k}\sum_{l=0}^{k-1}\sum_{i=1}^n\binom{n}{i}p^i\frac{\omega_k^l-\omega_{k}^{li}\omega^l_k}{1-\omega_k^l}k1?l=0k?1?i=1n?(in?)pi1?ωkl?ωkl??ωkli?ωkl??
1k∑l=0kωkl1?ωkl(∑i=1n(ni)pi?∑i=1n(ni)piωkli)\frac{1}{k}\sum_{l=0}^k\frac{\omega_k^l}{1-\omega_k^l}\left(\sum_{i=1}^n\binom{n}{i}p^i-\sum_{i=1}^n\binom{n}{i}p^i\omega_k^{li}\right)k1?l=0k?1?ωkl?ωkl??(i=1n?(in?)pi?i=1n?(in?)piωkli?)
1k∑l=0kωkl1?ωkl((p+1)n?(pωkl+1)n)\frac{1}{k}\sum_{l=0}^k\frac{\omega_k^l}{1-\omega_k^l}\left((p+1)^n-(p\omega_k^l+1)^n\right)k1?l=0k?1?ωkl?ωkl??((p+1)n?(pωkl?+1)n)

然后寫出來會愉快的發(fā)現(xiàn)沒有過樣例,仔細(xì)看我們式子里面有一個(gè)ωkl1?ωkl\frac{\omega_k^l}{1-\omega_k^l}1?ωkl?ωkl??

當(dāng) l=0l=0l=0 的時(shí)候1?ωkl=01-\omega_k^l=01?ωkl?=0,所以不能直接這么求,我們這個(gè)得分開考慮。

就是
∑i=1n(ni)pii?∑i=1nn!(i?1)!(n?i)!pi\sum_{i=1}^n\binom{n}{i}p^ii\Rightarrow \sum_{i=1}^n\frac{n!}{(i-1)!(n-i)!}p^ii=1n?(in?)pii?i=1n?(i?1)!(n?i)!n!?pi
np∑i=1n(n?1)!(i?1)!(n?i)!pi?1?n∑i=1n(n?1i)pi?1?np(p+1)n?1np\sum_{i=1}^n\frac{(n-1)!}{(i-1)!(n-i)!}p^{i-1}\Rightarrow n\sum_{i=1}^n\binom{n-1}{i}p^{i-1}\Rightarrow np(p+1)^{n-1}npi=1n?(i?1)!(n?i)!(n?1)!?pi?1?ni=1n?(in?1?)pi?1?np(p+1)n?1
就好了

時(shí)間復(fù)雜度:O(klog?P):O(k\log P):O(klogP)


code

#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; const ll P=998244353; ll n,p,k,ans; ll power(ll x,ll b){ll ans=1;x%=P;while(b){if(b&1)ans=ans*x%P;x=x*x%P;b>>=1;}return ans; } signed main() {scanf("%lld%lld%lld",&n,&p,&k);ll d=power(3,(P-1)/k);ans=n*p%P*power(p+1,n-1)%P;for(ll i=1,w=d;i<k;i++,w=w*d%P){ll inv=power(P+1-w,P-2)*w%P;ans+=power(p+1,n)*inv%P;ans-=power(w*p+1,n)*inv%P;ans=(ans+P)%P;}printf("%lld\n",ans*power(k,P-2)%P);return 0; }

總結(jié)

以上是生活随笔為你收集整理的P5591-小猪佩奇学数学【单位根反演】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。