DEV Community

Altencir Junior
Altencir Junior

Posted on

Resolvendo problemas no HackerRank: Modificando números Kaprekar.

Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje,vamos analisar valores e analisar se eles se classificam na categoria kaprekar . Vejamos mais informações com a explicação detalhada e sua resolução.

Modified Kaprekar Numbers -

Um número de Kaprekar é um número inteiro positivo com uma propriedade especial. Se você elevar ao quadrado, dividir o número em dois inteiros e somar esses inteiros, você terá o mesmo valor com o qual começou.

Por exemplo:

  • n = 9
  • d = 1

Se n = 9 e ele for elevado ao quadrado, n² = 81. Se separar os seus valores serão 8 + 1 = 9, o valor origianl de n. Logo, ele seria um número kaprekar.

Dados dois inteiros positivos p e q onde p é menor que q, escreva um programa para imprimir os números de Kaprekar modificados no intervalo entre p e q, inclusive. Se nenhum número de Kaprekar modificado existir no intervalo fornecido, imprima INTERVALO INVALIDO.

Vejamos o código a seguir:

function kaprekarNumbers(p, q) {
    // Write your code here
  let result = [];
    for(let i = p; i <= q; i++) {
      const squareString = (i * i).toString();
      const num1 = squareString.substring(0, squareString.length/2);
      const num2 = squareString.substring(squareString.length/2, squareString.length);

        if (Number(num1) + Number(num2) === i) {
            result = result.concat(i)
        }
    }
    if (result.length === 0) {
        console.log('INVALID RANGE')
    } else {
        console.log(...result);
    }
}
Enter fullscreen mode Exit fullscreen mode

Para cada número no intervalo, a função calcula o quadrado desse número e converte o resultado em uma string. Em seguida, divide a string ao meio para obter dois números, "num1" e "num2". Se a soma desses dois números for igual ao número original, então esse número é considerado um "número de Kaprekar".

Caso contrário, a função continua iterando através dos números até que tenha verificado todos os números no intervalo. Se nenhum número de Kaprekar for encontrado, a função imprime "INVALID RANGE". Caso contrário, a função imprime todos os números de Kaprekar encontrados.

O resultado será:

1
100

1 9 45 55 99
Enter fullscreen mode Exit fullscreen mode

Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.

Top comments (0)