/*
Un número de Munchausen (o Münchhausen) es un número natural n el cual la suma de sus dígitos
(en base 10), elevados a la misma potencia de ellos mismos es el mismo número es decir n. Este programa
calcula estos numeros (que son muy poquitos). Espero que lo disfruteis.
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <windows.h>
int main()
{ printf(" Numeros de Munchausen\n\n"); int i, j, k, vector[256];
int a, b, d=0, e=0, f, z;
printf(" Los numeros de Munchausen son:\n"); for(i=1;;i++)
{ fflush(stdin);
e=0;
k=i;
j=0;
d=0;
if(i<10)
{ j=1;
}
else
{ for(a=0;a<=9;a++)
{ if(k<10)
{ switch(k)
{ case 0:
{ j++;
break;
}
case 1:
{ j++;
break;
}
case 2:
{ j++;
break;
}
case 3:
{ j++;
break;
}
case 4:
{ j++;
break;
}
case 5:
{ j++;
break;
}
case 6:
{ j++;
break;
}
case 7:
{ j++;
break;
}
case 8:
{ j++;
break;
}
case 9:
{ j++;
break;
}
}
break;
}
b = k-a;
if((b%10)==0)
{ k = k/10;
j++;
a=-1;
}
else
{ b = k;
}
}
}
k = i;
for(a=0;;a++)
{ if(k<10)
{ switch(k)
{ case 0:
{ vector[d] = 0;
break;
}
case 1:
{ vector[d] = 1;
break;
}
case 2:
{ vector[d] = 2;
break;
}
case 3:
{ vector[d] = 3;
break;
}
case 4:
{ vector[d] = 4;
break;
}
case 5:
{ vector[d] = 5;
break;
}
case 6:
{ vector[d] = 6;
break;
}
case 7:
{ vector[d] = 7;
break;
}
case 8:
{ vector[d] = 8;
break;
}
case 9:
{ vector[d] = 9;
break;
}
}
break;
}
b = k-a;
if((b%10)==0)
{ vector[d] = a;
k = k/10;
d++;
a=-1;
}
else
{ b = k;
}
}
for(z=0;z<j;z++)
{ f = pow(vector[z],vector[z]);
e += f;
}
if(i==e)
{ printf("\n -- %d", e); }
}
return 0;
}
Comentarios sobre la versión: 20180817 (0)
No hay comentarios