提炼
显然我们可以把每一段拆开来单独考虑
我们该段有 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;
}
- Educational Codeforces Round 52educational codeforces round 52 educational codeforces round rated educational codeforces round 151 construction educational codeforces round educational codeforces round 147 cf-educational educational codeforces round educational codeforces round 158 educational codeforces contest round educational codeforces monsters round educational codeforces balance round