This submission gives wrong answer :
#include
#include<math.h>
using namespace std;
int getSolo(int a[],int n)
{
int ch[64]={0},i,j,ans=0;
for(i=0;i<n;i++)
{ j=0;
while(a[i]>0)
{
if(a[i]&1)
ch[j]+=1;
a[i]=a[i]>>1;
j++;
}
}
for(i=0;i<64;i++)
{
ch[i]=ch[i]%2;
}
for(i=0;i<n;i++)
{ if(ch[i])
ans+=1*pow(2,i);
}
return ans;
}
int main() {
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{cin>>a[i];
}
cout<<getSolo(a,n);
return 0;
}
while this submission gives correct answer:
#include
#include<math.h>
using namespace std;
int getSolo(int a[],int n)
{
int ch[64]={0},i,j,ans=0,no;
for(i=0;i<n;i++)
{ j=0;
no=a[i];
while(no>0)
{
ch[j]+=no&1;
no=no>>1;
j++;
}
}
int p=1;
for(i=0;i<64;i++)
{
ch[i]=ch[i]%2;
ans+=ch[i]p;
p=2;
}
return ans;
}
int main() {
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
{cin>>a[i];
}
cout<<getSolo(a,n);
return 0;
}
Why??