#include
#include
#define ll long long int
using namespace std;
ll a[10000005],pre[10000005];
int sum=0;
int main() {
int t;
cin>>t;
while(t–)
{
int n=0;
cin>>n;
memset(pre,0,sizeof(pre));
pre[0]=1;
sum=0;
for(int i=0;i<n;i++)
{
cin>>a[i];
sum+=a[i];
sum%=n;
if(sum<0)
{
sum=(sum+n)%n;
}
pre[sum]++;
}
ll ans=0;
for(int i=0;i<n;i++)
{
int m = pre[i];
ans+= (m)*(m-1)/2;
}
cout<<ans<<endl;
}
return 0;
}
Divisible subarrays failing 1 case
hey @shivansh.sm1 inside for loop define m as long long int because when you multiply m*(m-1) it may increase int limit just define it as ll m and you are good to go,if still got any further queries let me know else please mark this doubt as resolved,thankyou.
1 Like