#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 ()
{
        register uint64_t liczba asm ("r13") = 4600000000;
        register uint64_t suma asm ("r12") = 0;
        printf ("Start at: %lu\n",liczba);
        int i = 0;
        for (;liczba < 10000000000; liczba ++) {
                suma = potegi[liczba / 1000000000] + potegi[(liczba % 1000000000) / 100000000] + \
                potegi[(liczba % 100000000) / 10000000] + \
                potegi[(liczba % 10000000) / 1000000] + \
                potegi[(liczba % 1000000) / 100000] + \
                potegi[(liczba % 100000) / 10000] + \
                potegi[(liczba % 10000) / 1000] + \
                potegi[(liczba % 1000) / 100] + \
                potegi[(liczba % 100) / 10] + \
                potegi[liczba % 10];
                if (liczba == suma) {
                        printf ("%lu, %lu\n",liczba,suma);
                        break;
                        }
                }
}

