Haga clic en el enlace completo Resumen solución PAT B -AC
Título:
Dada una longitud de la cadena no exceda de 10 5. De la cadena, en el que esta pregunta requiere que todas las letras del número (número correspondiente a las letras az 1-26, mayúsculas y minúsculas) añadido a obtener el número entero N, entonces N analizar la representación binaria del número 0, el número 1. Por ejemplo dado cadena PAT (Basic), número de letras que es la suma de: 16 + 20 + 1 + 1 + 2 + 3 + 9 + 19 = 71, y 71 es binario 1000111, que es un 3 0,4 1.
Formato de entrada:
de entrada da la longitud de no más de 10 en la línea 5 , un extremo de retorno de carro de la cadena.
Formato de salida:
en número de línea tiene el número de salida de 0 y 1, separadas por un espacio entre ellos.
de entrada de la muestra:
PAT (Basic)
Resultado de muestra:
3 4
Mi código:
#include<iostream>
#include<cstdio>
#include<vector>
#include<string>
#include<set>
#include<map>
#include<algorithm>
#include<cmath>
#include<ctime>
#include<cstring>
#include<sstream>
using namespace std;
//有的时候题目是一起做的,所以会有不需要的头文件
int main()
{
string str;
getline(cin,str);
int letter[27]={0};
for(int i=0;i<str.length();i++)
{
if(str[i]>='a'&&str[i]<='z')letter[str[i]-'a'+1]++;
else if(str[i]>='A'&&str[i]<='Z')letter[str[i]-'A'+1]++;
}
int sum=0;
for(int i=0;i<27;i++)
{
if(letter[i])sum+=i*letter[i];
}
int num_0=0,num_1=0;
while(sum>=1)
{
if(sum%2)num_1++;
else num_0++;
sum/=2;
}
cout<<num_0<<" "<<num_1<<endl;
return 0;
}