Educational Codeforces Round 52 E

发布时间 2023-11-30 20:56:51作者: ycllz

提炼
显然我们可以把每一段拆开来单独考虑
我们该段有 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;
}