社区讨论

听取 WA 声一片

P5550Chino的数列参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mk9fuq9e
此快照首次捕获于
2026/01/11 15:54
上个月
此快照最后确认于
2026/01/15 13:50
上个月
查看原帖
全 WA,求调
CPP
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int N=80+5;

int n;
struct mj {
    int A[N][N];
    void clear() {
        for(int i=1;i<=n;++i)
            for(int j=1;j<=n;++j)
                A[i][j]=0;  
    }
    void reset() {
        clear();
        for(int i=1;i<=n;++i)
            A[i][i]=1;
    }
    mj operator *(const mj &x) const {
        mj res;
        res.clear();
        for(int i=1;i<=n;++i)
            for(int k=1;k<=n;++k)
                for(int j=1;j<=n;++j) 
                    res.A[i][j]=res.A[i][j]+A[i][k]*x.A[k][j];
        return res;
    }
}P,Q,Z,mul,M;
mj qpow(mj a,int b) {
    mj ans;
    ans.reset();
    while(b) {
        if(b&1) ans=ans*a;
        a=a*a,b>>=1;
    }
    return ans;
}
signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    int s,m,k;
    cin>>n>>s>>m>>k;
    M.clear();
    for(int i=1;i<=n;++i) 
        cin>>M.A[i][1];

    P.reset();
    P.A[s][m]=1,P.A[s][s]=0;
    P.A[m][s]=1,P.A[m][m]=0;
    Q.clear(),Q.A[1][n]=1;
    for(int i=1;i<n;++i) 
        Q.A[i+1][i]=1;

    Z=P*Q;
     
    /*
    for(int i=1;i<=n;++i) {
        for(int j=1;j<=n;++j) 
            cout<<Z.A[i][j]<<" ";
        cout<<'\n';
    }
    cout<<'\n';
    */

    mul=qpow(Z,k);
    M=mul*M;
    for(int i=1;i<=n;++i) 
        cout<<M.A[i][1]<<" ";
    cout<<'\n';

    return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...