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)

👋 Kindness is contagious

Explore a sea of insights with this enlightening post, highly esteemed within the nurturing DEV Community. Coders of all stripes are invited to participate and contribute to our shared knowledge.

Expressing gratitude with a simple "thank you" can make a big impact. Leave your thanks in the comments!

On DEV, exchanging ideas smooths our way and strengthens our community bonds. Found this useful? A quick note of thanks to the author can mean a lot.

Okay