版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37960603/article/details/82150421
题目传送门
代码:
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=100000+100;
const int mod=1e9+7;
LL tt[maxn],sum;
int ans[maxn];
int n,m;
int main(){
scanf("%d%d",&n,&m);
tt[0]=0;
tt[1]=1;
for(int i=2;i<maxn;i++) tt[i]=(n-1)*tt[i-1]+((i%2)?i:-i)+(((i-1)%2)?i-1:1-i),tt[i]%=mod;
for(int i=1;i<=n;i++) scanf("%d",&ans[i]),sum+=ans[i],sum%=mod;
while(m--){
int x,t;
scanf("%d%d",&x,&t);
LL key=sum*tt[t]%mod;
key=((key+(t%2?-ans[x]:ans[x]))%mod+mod)%mod;
printf("%lld\n",key);
}
}