查看原题目请点我
解题思路:这道题数据不大,直接相加以后算就完事了,注意几个小技巧,使用逻辑运算会比除法快一些,sum&1如果是奇数结果为1,如果是偶数结果为0,然后sum>>1表示sum除以2。中间第三个测试点,我前两次提交都出错了,当sum为0的时候可以直接输出0 0了,如果继续计算反而会出错。

#include<cstdio>
#include<cstring>
const int maxn=100010;
int main(){
    char str[maxn];
    gets(str);
    int sum=0;
    int len=strlen(str);
    for(int i=0;i<len;i++){
        if(str[i]>='a'&&str[i]<='z'){
            sum+=str[i]-'a'+1;
        }else if(str[i]>='A'&&str[i]<='Z'){
            sum+=str[i]-'A'+1;
        }
    }
    int cntzero=0;
    int cntone=0;
    if(sum==0){
        printf("0 0");
        return 0;
    }
    do{
        int t=sum&1;
        if(t==1) cntone++;
        else cntzero++;
        sum=sum>>1;
    }while(sum!=0);
    printf("%d %d",cntzero,cntone);
    return 0;
}