样例全过,但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;
}