#include <iostream>
#include <string>
#include <cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string str;
getline(cin, str);
int array[10000];
int sum = 0;
int trans[10000];
for (int i = 0; i < str.length(); i++)
{
if (str[i] >= 'a' && isalpha(str[i]))
{
array[i] = str[i] - 'a' + 1;
sum += array[i];
}
if (str[i] >= 'A' && str[i] < 'a' && isalpha(str[i]))
{
array[i] = str[i] - 'A' + 1;
sum += array[i];
}
}
int cnt = 0;
while (sum / 2 != 0)
{
trans[cnt] = sum % 2;
sum = sum / 2;
cnt++;
}
trans[cnt] = sum % 2;//区别在这里
int t0 = 0;
int t1 = 0;
for (int i = cnt - 1; i >= 0; i--)
{
if (trans[i] == 0)
{
t0++;
}
else
{
t1++;
}
}
cout << t0 << " " << t1;
}
案例2通过
#include <iostream>
#include <string>
#include <cctype>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string str;
getline(cin, str);
int array[10000];
int sum = 0;
int trans[10000];
for (int i = 0; i < str.length(); i++)
{
if (str[i] >= 'a' && isalpha(str[i]))
{
array[i] = str[i] - 'a' + 1;
sum += array[i];
}
if (str[i] >= 'A' && str[i] < 'a' && isalpha(str[i]))
{
array[i] = str[i] - 'A' + 1;
sum += array[i];
}
}
int cnt = 0;
while (sum / 2 != 0)
{
trans[cnt] = sum % 2;
sum = sum / 2;
cnt++;
}
trans[cnt++] = sum % 2;//区别在这里
int t0 = 0;
int t1 = 0;
for (int i = cnt - 1; i >= 0; i--)
{
if (trans[i] == 0)
{
t0++;
}
else
{
t1++;
}
}
cout << t0 << " " << t1;
}
只有案例2不通过,其他都通过