1057. 數零壹(20)——C語言

給定一串長度不超過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;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章