как генерировать нарциссические числа быстрее?

«Нарциссические числа », являются n цифрами, где сумма всех n-й степени их цифр равна числу.

Так,153 это нарциссическое число, потому что.1^3 + 5^3 + 3^3 = 153

Теперь, учитывая N, найти все нарциссические числа длиной N цифр?

Мой подход: должен был перебрать все числа, делая сумму степеней цифр

и проверь, одно и то же число или нет, и я за каждый рассчитал полномочия.

но это'не достаточно хорош, так есть ли способ быстрее ?!

Обновить: В природе всего 88 нарциссических чисел, а самое большое - 39 цифр. Но мне просто нужны числа длиной 12 или меньше.

Мой код:

long long int powers[11][12];
// powers[x][y] is x^y. and its already calculated

bool isNarcissistic(long long int x,int n){
    long long int r = x;
    long long int sum = 0;

    for(int i=0; i r)
            return false;
        x /= 10;
    }
    return (sum == r);
}

void find(int n,vector &vv){
    long long int start = powers[10][n-1];
    long long int end = powers[10][n];

    for(long long int i=start ; i

Ответы на вопрос(9)

Ваш ответ на вопрос