LOJ #6485. LJJ 学二项式定理
单位根反演练手题。
\[\sum_{i=0}^{n}\binom{n}{i}s^ia_{i\bmod 4}\\
\sum_{j=0}^{3}\sum_{i=0}^{n}[i\bmod 4=j]s^ia_j\binom{n}{i}\\
=\sum_{j=0}^{3}\sum_{i=0}^{n}\dfrac{1}{4}\sum_{k=0}^{3}\omega_{4}^{ik}\omega_{4}^{-jk}s^ia_j\binom{n}{i}\\
=\dfrac{1}{4}\sum_{j=0}^{3}\sum_{k=0}^{3}\omega_{4}^{-jk}a_j\sum_{i=0}^{n}\binom{n}{i}(\omega_{4}^{k}s)^i\\
=\dfrac{1}{4}\sum_{j=0}^{3}\sum_{k=0}^{3}\omega_{4}^{-jk}a_j(\omega_{4}^{k}s+1)^{n}\\
\]
在 \(\bmod 998244353\) 意义下 \(\omega_{4}^{1}\) 与 \(g^{\frac{mod-1}{4}}\) (原根)有同样的性质,直接用后者就好了。
#define mod 998244353
inline int qpow(int n,int k){int res=1;for(;k;k>>=1,n=1ll*n*n%mod)if(k&1)res=1ll*n*res%mod;return res;}
inline void fmod(int&x){x-=mod,x+=x>>31&mod;}
const int iv4=qpow(4,mod-2);
int s,a[4],w[4],ans;
LL n;
void Main(){
ans=0;
scanf("%lld%d%d%d%d%d",&n,&s,&a[0],&a[1],&a[2],&a[3]);
rep(j,0,3)rep(k,0,3){
int x=1ll*a[j]*w[(16-j*k)%4]%mod;
int y=qpow((1ll*w[k]*s+1)%mod,n%(mod-1));
fmod(ans+=1ll*x*y%mod);
}
ans=1ll*ans*iv4%mod;
printf("%d\n",ans);
}
signed main(){
w[0]=1,w[1]=qpow(3,(mod-1)/4),w[2]=1ll*w[1]*w[1]%mod,w[3]=1ll*w[1]*w[2]%mod;
for(int T=read();T;--T)Main();
}
路漫漫其修远兮,吾将上下而求索