查看原题目请点我
解题思路:这道题数据不大,直接相加以后算就完事了,注意几个小技巧,使用逻辑运算会比除法快一些,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;
}