题目:
https://loj.ac/problem/6485
给定 n , s , a 0 , a 1 , a 2 , a 3 n,s,a_0,a_1,a_2,a_3 n,s,a0,a1,a2,a3,求
[ ∑ i = 0 n ( n i ) s i a i m o d 4 ] m o d \Big[\sum_{i=0}^{n}{n\choose i}s^ia_{i\;mod\;4}\Big]\;mod\; [i=0∑n(in)siaimod4]mod99824453
思路:
- 单位根反演
[ n ∣ k ] = 1 n ∑ i = 0 n − 1 ω n k i [n|k]=\frac{1}{n}\sum_{i=0}^{n-1}\omega^{ki}_n [n∣k]=n1i=0∑n−1ωnki
∑ i = 0 n ( n i ) s i a i m o d 4 = ∑ j = 0 3 a j ∑ i = 0 n ( n i ) s i [ i m o d 4 = j ] = ∑ j = 0 3 a j ∑ i = 0 n ( n i ) s i [ 4 ∣ i − j ] = ∑ j = 0 3 a j ∑ i = 0 n 1 4 ( n i ) s i ∑ k = 0 3 ω 4 k ( i − j ) = 1 4 ∑ j = 0 3 a j ∑ k = 0 3 ω 4 − k j ∑ i = 0 n ( n i ) s i ω 4 k i = 1 4 ∑ j = 0 3 a j ∑ k = 0 3 ω 4 − k j ( s ω 4 k + 1 ) n \begin{aligned} &\sum_{i=0}^{n}{n\choose i}s^ia_{i\;mod\;4}\\ =&\sum_{j=0}^{3}a_j\sum_{i=0}^{n}{n\choose i}s^i[i\;mod\;4=j]\\ =&\sum_{j=0}^{3}a_j\sum_{i=0}^{n}{n\choose i}s^i[4|i-j]\\ =&\sum_{j=0}^{3}a_j\sum_{i=0}^{n}\frac{1}{4}{n\choose i}s^i\sum_{k=0}^{3}\omega^{k(i-j)}_4\\ =&\frac{1}{4}\sum_{j=0}^{3}a_j\sum_{k=0}^{3}\omega^{-kj}_4\sum_{i=0}^{n}{n\choose i}s^i\omega^{ki}_4\\ =&\frac{1}{4}\sum_{j=0}^{3}a_j\sum_{k=0}^{3}\omega^{-kj}_4(s\omega^k_4+1)^n \end{aligned} =====i=0∑n(in)siaimod4j=0∑3aji=0∑n(in)si[imod4=j]j=0∑3aji=0∑n(in)si[4∣i−j]j=0∑3aji=0∑n41(in)sik=0∑3ω4k(i−j)41j=0∑3ajk=0∑3ω4−kji=0∑n(in)siω4ki41j=0∑3ajk=0∑3ω4−kj(sω4k+1)n
#include <bits/stdc++.h> #define ll long long using namespace std; const int mod = ; const int w [] = {
1,,,}; ll T,n,s,ans,res,inv; ll a[4]; ll ksm (ll a,ll b) {
a%=mod; ll s=1; for (; b; b>>=1,a=a*a%mod) if (b&1) s=s*a%mod; return s; } int main () {
scanf("%lld",&T); inv=ksm(4,mod-2); while (T--) {
scanf("%lld%lld%lld%lld%lld%lld",&n,&s,&a[0],&a[1],&a[2],&a[3]); ans=0; for (int i=0; i<=3; ++i) {
res=0; for (int j=0; j<=3; ++j) res=(res+w[(4-i*j%4)%4]*ksm(s*w[j]+1,n)%mod)%mod; ans=(ans+a[i]*res%mod)%mod; } printf("%lld\n",ans*inv%mod); } return 0; }
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/42903.html