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));
}




mão na roda: use o método trunc()
este método trunca o número,deixando somente a parte inteira.
muito bom Thiago!!
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))