上午pj模拟 T3 20pts,#7,#8 0分
  • 板块学术版
  • 楼主Siteyava_145
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/10/23 12:07
  • 上次更新2023/10/27 06:21:16
查看原帖
上午pj模拟 T3 20pts,#7,#8 0分
707914
Siteyava_145楼主2022/10/23 12:07

大样例过了

#include<bits/stdc++.h>
#define mod 998244353
#define ll long long
using namespace std;
ll a[1000005],m;
ll ksm(ll A,ll b,ll c){
	ll ans=1;
	while(b){
		if(b&1){
			ans=ans*A%c;
		}
		A=A*A%c;
		b>>=1;
	}
	return ans;
}
ll hs(ll x){
	return x*(x+1)%mod*(2*x+1)%mod*ksm(6,mod-2,mod)%mod;
}
int main(){
    ll n,fir=1;
	scanf("%lld%lld",&n,&m);
	for(ll i=1;i<=n;i++){
		scanf("%lld",&a[i]);
		if(a[i]>0&&a[i-1]<=0)fir=i;
	}
	if(a[1]>0){
		ll sum=0;
		for(ll i=1;i<=n;i++){
			sum+=hs(a[i]+m)-hs(a[i]);
			sum=(sum+mod)%mod;
		}
		cout<<(sum+mod)%mod;
		return 0;
	}
	else if(a[n]<0){
		ll sum=0;
		for(ll i=1;i<=n;i++){
			sum+=hs(-a[i]+m-1)-hs(-a[i]-1);
			sum%=mod;
		}
		cout<<sum;
		return 0;
	}
	ll sum=0;
	for(int i=1;i<fir;i++){
		sum+=m*((a[i]+1)*(a[i]+1)%mod)%mod;
	}
	for(int i=fir;i<=n;i++){
		sum+=hs(a[i]+m)-hs(a[i]);
		sum=(sum+mod)%mod;
	}
	cout<<sum;
    return 0;
}
2022/10/23 12:07
加载中...