Please tell why my code is not working . problem code CSUB

#include <iostream>
using namespace std;

int main() {
	// your code goes here
	int test;
	cin>>test;
	
	while(test--)
	{
	   int n;
	   cin>>n;
	   
	   char a[n];
	   int i, count=0, ans=0;
	   for(i=0; i<n; i++)
	   {
	       cin>>a[i];
	       if(a[i]=='1')
	        count++;
	   }
	 
	  cout<<(count*(count+1)/2)<<endl;
	   
	}
	
	return 0;
}

@iamol_aggarwal - you can ask this to the doubt solvers at CodeChef: Practical coding for everyone

Below is the code that works

#include <bits/stdc++.h>
using namespace std;

int main()
{
int t;
cin>>t;

while(t--) {
    int n;
    cin>>n;
    
    char a[n];
    int i, ans=0;
    long long int count=0;
    for(i=0; i<n; i++)
    {
       cin>>a[i];
       if(a[i]=='1')
        count++;
    }
    
    cout<<(count*(count+1)/2)<<endl;
}

return 0;

}

I have only changed the datatype of count variable from int to long long int.

In your solution the datatype of count is int so when you calculate count*(count+1)/2 then the overall value would be returned as int.

Now, consider a case when length of string is 10^5 and all characters are 1. In that case n*(n+1)/2 would exceed the limit of int and hence give wrong answer.

Thats why long long int will be used as the datatype of count variable here.

thank you so much.