[toc]
code1 19分
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
int sum = 0;
string s;
getline(cin, s);
map<int, int>m;
for (int i = 0; i < s.length(); i++) {
if (isalpha(s[i])) sum += (toupper(s[i]) - 'A'+1);
}
while (sum >= 2)
{
m[sum % 2]++;
sum = sum / 2;
}
m[sum]++;
cout << m[0] << " " << m[1];
return 0;
}
bug:在于如果sum==0,0的个数竟然是1!这也是因为我自己在小黑窗里乱按了一串数字,结果1的个数是1发现的。
code2 20分
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
int sum = 0;
string s;
getline(cin, s);
map<int, int>m;
for (int i = 0; i < s.length(); i++) {
if (isalpha(s[i])) sum += (toupper(s[i]) - 'A'+1);
}
while (sum >= 2)
{
m[sum % 2]++;
sum = sum / 2;
}
m[sum]++;
if (sum == 0) cout << "0" << " " << "0";
else cout << m[0] << " " << m[1];
return 0;
}