Solución computacional al problema “Números bonitos, números feos”

Código en C++ que resuelve el desafío “Números bonitos, números feos” de El País de ayer. Sí, ya sé que utilizar una solución computacional no será válida 🙁 , pero es que no he podido evitar hacer trampa.

#include <iostream>
using namespace std;
//Esta función calcula el sumatorio de k
 int sumaDigitos ( int k ) {
 int suma=0;
 int numero = k;
 int nuevon, udigito;
do {
 nuevon= numero / 10;
 udigito=numero % 10;
 numero=nuevon;
 suma=suma+udigito;
} while (nuevon != 0);
return suma;
}
int main() {
//Número a analizar
 int n = 0;
//Total de números bonitos
 int nbonitos = 0;
//n solo será bonito si bonito = 1
 int bonito = 0;
while ( n < 100000 ) {
if ( n % 5 == 0 ) {
 cout << n << " (cumple a)" << endl;
 bonito++;
 }
if ( n % 7 == 2 ) {
 cout << n << " (cumple b)" << endl;
 bonito++;
 }
if ( sumaDigitos(n) % 9 == 0 ) {
 cout << n << " (cumple  c)  -- " << sumaDigitos(n) << endl;
 bonito++;
 }
if ( bonito == 1 ) {
 cout << n << " --> Bonito" << endl;
 nbonitos++;
 }
bonito = 0;
 n++;
}
cout << endl << endl << "Total bonitos --> " << nbonitos << endl;
 return 0;
 }

Gerard

Gerard Farràs i Ballabriga.