LOJ6485. LJJ 学二项式定理
【题意】
【分析】
直接上单位根反演+二项式定理推一波式子即可
【代码】
#include<bits/stdc++.h> using namespace std; #define mp make_pair #define fi first #define se second #define lson now<<1 #define rson now<<1|1 typedef long long ll; const int mod=998244353; ll n,s,a[4],ans; ll w[4],inv4; ll qpow(ll a,ll b) { ll res=1; while(b) { if(b&1) res=res*a%mod; a=a*a%mod; b>>=1; } return res; } int main() { freopen("a.in","r",stdin); freopen("a.out","w",stdout); int t; scanf("%d",&t); for(int i=0;i<4;i++) w[i]=qpow(3,1LL*i*(mod-1)/4); inv4=qpow(4,mod-2); while(t--) { scanf("%lld%lld",&n,&s); n%=mod-1; for(int i=0;i<4;i++) scanf("%lld",&a[i]); ans=0; for(int i=0;i<4;i++) { ll res=0; for(int j=0;j<4;j++) res=(res+w[((4-i)*j)&3]*qpow(s*w[j]%mod+1,n)%mod)%mod; ans=(ans+res*a[i]%mod); } printf("%lld\n",ans*inv4%mod); } return 0; }