题目:https://pintia.cn/problem-sets/994805260223102976/problems/994805270914383872
经验总结:
让数字与1进行&操作,判断结果为0还是1,分别计数即可。
记:右移操作符操作完了得把结果赋值给变量,不能单独使用。右移1位相当于除以2,左移1位相当于乘以2。移n位,相当于乘以或除以2n
记:sum = sum>>1; 等价于 sum >>= 1;
C++代码:
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int sum = 0;
string s;
getline(cin,s);
for(auto it=s.begin();it!=s.end();it++){
if(*it>='A'&&*it<='Z'){
sum += *it-'A'+1;
}else if(*it>='a'&&*it<='z'){
sum += *it-'a'+1;
}
}
int zero = 0,one = 0;
while(sum){
if(sum&1){
one++;
}else{
zero++;
}
sum >>= 1;
}
cout<<zero<<" "<<one<<endl;
return 0;
}