/**
* 1.解题思路:用getline接收一行字符串,对于字符串的每一位
* 如果是字母(isalpha),则将字母转化为大写,并累加(s[i] – ‘A’ + 1)算出n
* 然后将n转化为二进制,对每一位处理,如果是0则cnt0++,如果是1则cnt1++
*
* 2.参考博客:https://www.liuchuo.net/archives/2494
* */
#include <iostream>
#include <cctype>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s);
int n = 0;
for(int i = 0; i < s.length(); i++) {
if(isalpha(s[i])) {
s[i] = toupper(s[i]);
n += (s[i] - 'A' + 1);
}
}
int cnt0 = 0, cnt1 = 0;
//十进制->二进制
while(n != 0) {
if(n % 2 == 0) {
cnt0++;
} else {
cnt1++;
}
n = n / 2;
}
printf("%d %d", cnt0, cnt1);
return 0;
}
1057 数零壹
最新推荐文章于 2021-03-06 21:57:37 发布