Solution 1: Using Array
#include <bits/stdc++.h>
using namespace std;
long long A[220000000];
int main()
{
long long n,a,c,d,x,i,m,j,k;
while(cin>>a)
{
if(a==0)
{
break;
}
n=a;
i=0;
while(n!=0)
{
d=n%2;
A[i]=d;
n=n/2;
i++;
}
reverse(A,A+i);
c=0;
for(j=0; j<i; j++)
{
if(A[j]==1)
{
c++;
}
}
cout<<"The parity of ";
for(j=0; j<i; j++)
{
cout<<A[j];
}
cout<<" is "<<c<<" (mod 2)."<<endl;
}
return 0;
}
Solution 2: Using String
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long n,a,c,d,i;
while(cin>>a)
{
string s;
if(a==0)
{
break;
}
n=a;
i=0;
while(n!=0)
{
d=n%2;
s+=d+'0'; /// s+=d+48 can be written...same thing.
n=n/2;
i++;
}
reverse(s.begin(),s.end());
c=0;
for(i=0; i<s.size(); i++)
{
if(s[i]=='1')
{
c++;
}
}
cout<<"The parity of "<<s<<" is "<<c<<" (mod 2)."<<endl;
}
return 0;
}