#include <stdio.h>                                                        
#include <stdint.h>                                                       
#include <math.h>                                                         
#include <signal.h>                                                       

uint64_t potegi[10] = {0,1,1024,59049,1048576,9765625,60466176,282475249,1073741824,3486784401};

int main ()
{
       	uint64_t liczba = 4600000000;
        uint64_t suma = 0;
	int cyfry[10] = {0,};
        printf ("Start at: %lu\n",liczba);
        int i = 0;
        for (;liczba < 10000000000; liczba ++) {
		suma = 0;
                cyfry[0] = liczba / 1000000000;
                cyfry[1] = (liczba % 1000000000) / 100000000;
                cyfry[2] = (liczba % 100000000) / 10000000;
                cyfry[3] = (liczba % 10000000) / 1000000;
                cyfry[4] = (liczba % 1000000) / 100000;
                cyfry[5] = (liczba % 100000) / 10000;
                cyfry[6] = (liczba % 10000) / 1000;
                cyfry[7] = (liczba % 1000) / 100;
                cyfry[8] = (liczba % 100) / 10;
                cyfry[9] = liczba % 10;
                for (i=0;i<10;i++) {
                        suma += potegi[cyfry[i]];
                        }
                if (liczba == suma) {
                        printf ("%lu\n",liczba);
                        break;
                        }

                }
}

