Problema
Um número com k dígitos é um número de Armstrong se a soma de cada dígito elevado à potência k for igual ao próprio número. Por exemplo, 153 = 1³ + 5³ + 3³.
Implemente is_armstrong(n).
Entrada
n: Um inteiro não negativo.
Saída
Retorne true se n for um número de Armstrong.
Restrições
0 ≤ n ≤ 10¹⁸
Exemplos
Entrada:
n = 153
Saída esperada:
expected = True
Entrada:
long long n = 153;
Saída esperada:
bool expected = true;
Entrada:
long n = 153;
Saída esperada:
bool expected = true;
Explicação
1³ + 5³ + 3³ = 1 + 125 + 27 = 153.
Entrada:
n = 10
Saída esperada:
expected = False
Entrada:
long long n = 10;
Saída esperada:
bool expected = false;
Entrada:
long n = 10;
Saída esperada:
bool expected = false;
Explicação
1² + 0² = 1, que não é 10.
Como abordar
Tente sozinho primeiro e depois abra uma dica de cada vez.
Dica 1
Conte quantos dígitos o número tem antes de somar as potências.
Dica 2
Compare o número original com a soma de cada dígito elevado à quantidade de dígitos.
Dica 3
Lembre que 0 é um caso especial de um dígito.
Complexidade esperada
tempo O(k), espaço extra O(1)
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.