KeyWords:
count_zero_binary :num | (num+1)
count_one_binary :num & (num -1)
num >>1;
AC CODE:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#define M 100000+1
#include <cstring>
using namespace std;
int main()
{
char str_input[M];
scanf("%[^\n]",str_input);
int sum = 0;
for(int i = 0 ; i < strlen(str_input) ; i ++){
if(str_input[i] > 'A' && str_input[i] < 'Z' ||str_input[i] == 'A' ||str_input[i] == 'Z'){
sum += str_input[i] -'A'+1;
//cout<<sum<<endl;
}
else if(str_input[i] > 'a'&& str_input[i] <'z'|| str_input[i] == 'a'|| str_input[i] == 'z'){
sum += str_input[i] -'a'+1;
//cout<<sum<<endl;
}
}
int count_one = 0;
int count_digit = 0;
{
//printf("%a",2600000);
//sprintf(str_binary,"%b",sum);
int temp = sum;
while(temp){
temp = temp&(temp-1);
count_one ++;
}
temp =sum;
while(temp){
temp = temp>>1;
count_digit++;
}
cout<<count_digit - count_one<<" "<<count_one<<endl;
}
//cout<<sum<<endl;
return 0;
}