救救孩子罢,求调D(悬关)
  • 板块学术版
  • 楼主Hughpig
  • 当前回复5
  • 已保存回复5
  • 发布时间2024/8/17 21:44
  • 上次更新2024/8/18 09:22:17
查看原帖
救救孩子罢,求调D(悬关)
646208
Hughpig楼主2024/8/17 21:44

样例全过,但wa 13

做法和官方题解不同

/*
*Author: Hughpig
*made in China
*/

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define up(l,r,i) for(ll i=(l);(i)<=(r);++i)

constexpr int N=2e5+9,M=1e6+10;

ll n,m,a[N],val[M],_val[M],ans;

int main()
{
    int TestCases=1;
    //cin>>TestCases;
    while(TestCases--){
    	cin>>n>>m;
    	up(1,n,i)cin>>a[i];
    	ll s=0,_s=0;
    	val[0]=1;
    	up(1,n,i){
    		s+=a[i];
    		s%=m;
    		ans+=val[s];
    		val[s]++;
		}
		if(s==0)cout<<ans,exit(0);
		up(1,n-1,i){
			_s+=a[i];
			_s%=m;
			ll qwq=_s-s;
			if(qwq<0)qwq+=m;
			//cout<<qwq<<' '<<_val[qwq]<<'\n';
			ans+=_val[qwq];
			_val[_s]++;
		}
		cout<<ans;
    }
	return 0;
}
2024/8/17 21:44
加载中...