也是板子。求
对于这个下标取模,我们直接拆成四个式子,形如
直接单位根反演后面这一坨
然后就可以做了,最后那一个跟着走就行。
把k取遍0123加起来。记得除以4。
#include<bits/stdc++.h>
using namespace std;
#define in read()
#define int long long
int in{
int cnt=0,f=1;char ch=0;
while(!isdigit(ch)){
ch=getchar();if(ch=='-')f=-1;
}
while(isdigit(ch)){
cnt=cnt*10+ch-48;
ch=getchar();
}return cnt*f;
}
const int mod=998244353;
int n,s,a[5];
int w;int ans;
int ksm(int a,int b){
int sum=1;a%=mod;
while(b){
if(b&1)sum=sum*a%mod;a=a*a%mod;b>>=1;
}return sum;
}
signed main(){
int t=in;w=ksm(3,(mod-1)/4);
while(t--){
n=in;s=in;for(int i=0;i<4;i++)a[i]=in;
ans=0;
for(int i=0;i<4;i++){
for(int j=0,ww=1;j<4;j++,ww=ww*w%mod)
ans=(ans+a[i]*ksm(s*ww%mod+1,n)%mod*ksm(ww,4-i)%mod)%mod;
}
cout<<ans*ksm(4,mod-2)%mod<<'\n';
}
return 0;
}