/*
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