D展开全文即可
图片说明

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll>  pll;
#define fi first
#define se second
#define pk push_back
#define mk make_pair

const ll N=5e2+10, mod=998244353, inf=0x3f3f3f3f3f3f3f3f;

ll peo[N], prof[N], pro[N], tmp[N], ans[N], a, b, c, n, k;

ll qmi(ll a,ll b,ll m=mod){
    ll res=1;
    while(b){
        if(b&1) res=res*a%m;
        b>>=1, a=a*a%m;
    }
    return res;
}

void mul(ll a[], ll b[],ll res[]){
    for(ll i=0;i<n;i++) res[i]=0;
    for(ll i=0;i<n;i++)
        for(ll j=0;j<n;j++)
            res[(i+j)%n]+=a[i]*b[j]%mod, res[(i+j)%n]%=mod;
    return ;
}

void atob(ll a[], ll b[]) {
    for(ll i=0;i<n;i++)
        b[i]=a[i];
}
void work(){
    cin>>n>>k;
    cin>>a>>b>>c;
    for(ll i=0;i<n;i++) scanf("%lld",&peo[i]);
    ll s=a+b+c, p1=a*qmi(s,mod-2)%mod, p2=b*qmi(s,mod-2)%mod, p3=c*qmi(s,mod-2)%mod;
    prof[0]=p3, prof[1]=p1, prof[n-1]=p2; pro[0]=1;
    while(k){
        if(k&1) mul(pro,prof,tmp), atob(tmp, pro);
        mul(prof,prof,tmp), atob(tmp, prof);puts("");
        k>>=1;
    }
    for(ll i=0;i<n;i++)
        for(ll j=0;j<n;j++)
            ans[(i+j)%n]+=peo[i]*pro[j]%mod, ans[(i+j)%n]%=mod;
    for(ll i=0;i<n;i++)
        printf("%lld ",ans[i]);

    return ;
}
int main() {
//    ll t;
//    for(cin>>t;t--;)
        work();
    return 0;
}

点个赞吧,谢谢对本博客的支持,进入博客可以看系列