您的位置:首页 > 其它

PAT basic 1057

2017-08-22 20:18 232 查看
#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;
}
/*
分析:用getline接收一行字符串,对于
字符串的每一位,如果是字母(isalpha),
则将字母转化为大写,并累加(s[i] – ‘A’ + 1)
算出n,然后将n转化为二进制,对每一位
处理,如果是0则cnt0++,如果是1则cnt1++,
最后输出cnt0和cnt1的值~~~
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: