Olá, seja bem vindo a mais um Resolvendo problemas no HackerRank: No caso de hoje, Watson deseja desafiar mais uma vez as capacidades de Sherlock, põe sobre ele um desafio. Vejamos agora uma explicação detalhada e sua resolução.
Sherlock and Squares -
Watson gosta de desafiar a habilidade matemática de Sherlock. Ele fornecerá um valor inicial e final que descreve um intervalo de números inteiros, incluindo os pontos finais. Sherlock deve determinar o número de inteiros quadrados dentro desse intervalo.
Um inteiro quadrado é um inteiro que é o quadrado de um inteiro, exemplo:
Teremos como parâmetros:
- int a: o limite inferior do intervalo
- int b: o limite superior do intervalo
- return: O número de quadrados inteiros no intervalo entre os dois.
Vejamos o código:
function squares(a, b) {
// Write your code here
let squareRootA = parseInt(Math.sqrt(a));
let squareRootB = parseInt(Math.sqrt(b));
let count = 0;
if((squareRootA * squareRootA) === a) count++;
if ((squareRootB - squareRootA) >= 0)
return (squareRootB - squareRootA) + count;
return 0+count
}
A função retorna a quantidade de números inteiros entre a e b (incluindo a e b) que são quadrados perfeitos (ou seja, têm raiz quadrada exata).
Para isso, a função começa criando duas variáveis squareRootA
e squareRootB
, que representam a raiz quadrada inteira de a e b, respectivamente. A função então inicializa uma variável count
em 0.
Em seguida, a função verifica se squareRootA
é um quadrado perfeito, comparando squareRootA
* squareRootA
com a
. Se squareRootA
* squareRootA
for igual a a
, significa que a
é um quadrado perfeito e, portanto, incrementa count em 1.
A função então verifica se a diferença entre squareRootB
e squareRootA
é maior ou igual a zero. Se for, significa que há pelo menos um número inteiro entre squareRootA
e squareRootB
que é um quadrado perfeito (além de a, se a for um quadrado perfeito). Nesse caso, a função retorna (squareRootB
- squareRootA
) + count
, que é a quantidade de números inteiros entre a e b que são quadrados perfeitos. Se a diferença entre os dois for menor que 0, significa que não há nenhum número inteiro entre a e b que é um quadrado perfeito, então a função retorna 0 + count
.
O resultado final encontrado por Sherlock será:
2
3 9
17 24
input:
2
0
Assim, concluímos mais um Resolvendo problemas no HackerRank: até a próxima.
Top comments (0)