Educational Codeforces Round 52 E

提炼
显然我们可以把每一段拆开来单独考虑
我们该段有 A^len 选择 右边肯定只要不是相同 我们的集合就+1
Alen*(Alen -1)
当然要是相同也要算1 A^len
中间当然就是随便选啥都可以

void solve() {
    int n,m,A;cin>>n>>m>>A;
    vector<int>b(m+1);
    for(int i=1;i<=m;i++)cin>>b[i];
    int ans=1,inv=qmi(2,mod-2,mod);
    for(int i=1;i<=m;i++){
        int now=qmi(A,b[i]-b[i-1],mod);
        (ans*=now*(1+now)%mod*inv%mod)%=mod;
    }
    (ans*=qmi(A,n-2*b[m],mod))%=mod;
    cout<<ans<<endl;
}
posted @ 2023-11-30 20:51  ycllz  阅读(10)  评论(0)    收藏  举报