PAT Grado B 1016 Parte A+B (15 puntos) -- dos métodos

contenido del tema

La "parte DA​ (entero de 1 bit)" de un entero positivo A se define como un nuevo entero PA​ que consta de todos los DA​ en A. Por ejemplo: Dado A=3862767, DA​=6, entonces el PA​ de "6 partes" de A es 66 porque hay 2 6 en A.

Ahora dados A, DA​, B, DB​, escriba un programa para calcular PA​+PB​.

Formato de entrada:

La entrada da A, DA​, B, DB​ en secuencia en una sola línea, separados por espacios, donde 0<A,B<109.

Formato de salida:

Imprime el valor de PA​+PB​ en una línea.

Ejemplo de entrada 1:

3862767 6 13530293 3

Salida de muestra 1:

399

Ejemplo de entrada 2:

3862767 1 13530293 8

Salida de muestra 2:

0

Ideas para resolver problemas

método-método original

Pase en la cadena A, B los caracteres da, db, recorra la cadena, cuente el número de ocurrencias de los caracteres, defina una nueva función para pasar da, db y la cantidad de veces que aparecen en la cadena, convierta el glifo a un número entero, y luego se acumula a través de la función pow, y finalmente se devuelve la suma de las dos sumas acumuladas.

El método 2 usa las nuevas características de la cadena C++ para hacer

Además de los cuatro datos requeridos por el título, defina dos cadenas adicionales A, B, push_back() para almacenar caracteres y luego defina una función que convierta String en Int. La idea de resolución de problemas es la misma que el método 1.

Código detallado

método uno

#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int fun(char a,char b,int counta,int countb){
    int suma = 0,sumb = 0;
    int ka = a-'0';
    int kb = b-'0';
    for(int i = 0;i<counta;i++){
        suma+=pow(10,i)*ka;
    }
    for(int i = 0;i<countb;i++){
        sumb+=pow(10,i)*kb;
    }
    return suma+sumb;
}
int main(){
    string A,B;
    char da,db;
    int counta = 0,countb = 0;
    cin>>A>>da>>B>>db;
    for(int i = 0;i<A.length();i++){
        if(A[i]==da) counta++;
    }
    for(int i = 0;i<B.length();i++){
        if(B[i]==db) countb++;
    }
    cout<<fun(da,db,counta,countb);
}

Método dos

#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;


int s2i(string s){
    stringstream ss;
    int k;
    ss<<s;
    ss>>k;
    return k;
}
int main(){
    cin.tie();
    string A,B,AA,BB;
    char a,b;
    cin>>A>>a>>B>>b;
    for(int i = 0;i<A.size();i++) {
        if(A[i] == a) AA.push_back(a);
    }
    for(int i = 0;i<B.size();i++) {
        if(B[i] == b) BB.push_back(b);
    }
    cout<<s2i(AA)+s2i(BB);
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/weixin_45660485/article/details/119295786
Recomendado
Clasificación