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