PAT B -1057 número cero uno (20 minutos)

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;
}

Publicado 82 artículos originales · ganado elogios 1 · vistas 1678

Supongo que te gusta

Origin blog.csdn.net/qq_34451909/article/details/104861851
Recomendado
Clasificación