Educational Codeforces Round 52E(构造,快速幂)
#include <bits/stdc++.h>
using namespace std;
const int mod=998244353;
long long b[200007];
long long ksm(long long x,long long y){//快速幂
long long ans=1;
while(x){
if(x&1)
ans=ans*y%mod;
y=y*y%mod;
x>>=1;
}
return ans;
}
int main(){
long long n,m,a;
scanf("%lld%lld%lld",&n,&m,&a);
long long ans=1;
for(int i=1;i<=m;i++){
scanf("%lld",&b[i]);
long long c=ksm(b[i]-b[i-1],a);//多出来的部分进行排列组合
ans=c*(c+1)/2%mod*ans%mod;//左右各多余部分的a次方,即x^2a,减去左右倒置后相同,即与一边的组合情况数量相等,即x^a,除以二得到交换后相同的数量再加上之前被减去的左右镜像的x^a种得到答案
}
ans=ans*ksm(n-2*b[m],a)%mod;//快速幂乘上还未组合过的
printf("%lld\n",ans);
return 0;
}
保持热爱 不懈努力
不试试看怎么知道会失败呢(划掉)
世上无难事 只要肯放弃(划掉)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步