給定一串長度不超過105的字符串,本題要求你將其中所有英文字母的序號(字母a-z對應序號1-26,不分大小寫)相加,得到整數N,然後再分析一下N的二進制表示中有多少0、多少1。例如給定字符串“PAT (Basic)”,其字母序號之和爲:16+1+20+2+1+19+9+3=71,而71的二進制是1000111,即有3個0、4個1。
輸入格式:
輸入在一行中給出長度不超過105、以回車結束的字符串。
輸出格式:
在一行中先後輸出0的個數和1的個數,其間以空格分隔。
輸入樣例:PAT (Basic)輸出樣例:
3 4
#include<stdio.h>
#include<string.h>
int main()
{
char str[100001];
int i;
int sum=0;
gets(str);
int a=0,b=0;
for(i=0;i<strlen(str);i++)
{
if(str[i]>='a'&&str[i]<='z')
sum+=str[i]-'a'+1;
if(str[i]>='A'&&str[i]<='Z')
sum+=str[i]-'A'+1;
}
while(sum)
{
if(sum%2)
a++;
else
b++;
sum/=2;
}
printf("%d %d",b,a);
return 0;
}