как генерировать нарциссические числа быстрее?
«Нарциссические числа », являются 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