image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF
Article image
Vanessa Ostroski
Vanessa Ostroski12/12/2022 14:42
Compartilhe

Fatorial Desajeitado (4/5) - como passar pelo ultimo teste.

  • #JavaScript

O segredo está em como arredondamos os números. No JavaScript temos varias formas de arredondar:

Arredondar número para cima

Math.ceil(valor) 

Arredondar número para baixo

Math.floor(valor)

Arredondar para o valor mais próximo

Math.round(valor)

Mas NENHUM desses servem para completar o desafio.

O que usaremos para concluir o desafio é o parseInt().

//n é o numero que recebe o input
let n = gets();
//conta é a variavel que eu vou somando os resultados das contas
let conta = 0;
//soma é uma variavel a parte só sobre a soma
let soma = 0;
//sinal vai inicial positivo e depois do primeiro loop ele se torna negativo
let sinal =1;
let i = n;
let mult;


if (n <= 2) { 

console.log(n); 

} else{
// i recebe n e se repete até ser menor q 4. e subtrai 4 cada vez.
  for (i = n; i >= 4; i=i-4) {


      mult = sinal* n * (n-1) ;
      conta += parseInt(mult/(n-2));
      soma += (n-3)
      n= n-4;
      sinal = -1;
  }
  //para quando n for menor que 4
switch (i) {
      case 3:
          conta += -6;
          // mult = sinal* n * (n-1) ;
          // conta += Math.round(mult/ (n-2));
          break;
      case 2:
          conta += -2;
          // conta +=sinal* n * (n-1) ;
          break;
      case 1:
          conta += -1;
          // conta +=sinal* n;
          break;
      case 0:
          break;
      default:
          break;
  }


  x = conta + soma;
  console.log(parseInt(x));
}
Compartilhe
Comentários (3)
Samuel Belisario
Samuel Belisario - 12/12/2022 18:43

mão na roda: use o método trunc()

este método trunca o número,deixando somente a parte inteira.

Vanessa PO
Vanessa PO - 12/12/2022 15:15

muito bom Thiago!!

Thiago Cardoso
Thiago Cardoso - 12/12/2022 14:55

let lines = gets().split("\n");

let n = parseInt(lines.shift());


if (n <= 2) {


 print(n);


}


let i = n;

let arr = []

let total = 0



while (i >= 1) {

  arr[i] = i

  i--

}

arr.shift()

let array = arr.reverse()

let a = array.length



while (array.length > 0) {

  if (array.length >= 4) {

    total += parseInt((array[0] * array[1]) / (array[2])) + array[3]

    array.splice(0, 4)    

    while (array.length >= 4) {

      total = total - parseInt((array[0] * array[1]) / array[2]) + array[3]

      array.splice(0, 4)

    }

    if (array.lengh == 3) {

      total = total - parseInt((array[0] * array[1]) / array[2])

      array.splice(0, 3)

    }

    if (array.length == 2) {

      total = total - (array[0] * array[1])

      array.splice(0, 2)

    }

    if (array.length == 1) {

      total = total - array[0]

      array.splice(0, 1)

    }

  }

  if (array.lengh == 3) {

    total = total + parseInt((array[0] * array[1]) / array[2])

    array.splice(0, 3)

    if (array.length == 2) {

      total = total - (array[0] * array[1])

      array.splice(0, 2)

    }

    if (array.length == 1) {

      total = total - array[0]

      array.splice(0, 1)

    }

  }

  if (array.length == 2) {

    total = total - (array[0] * array[1])

    array.splice(0, 2)

  }

}

console.log(parseInt(total))