GOOGLE ADS

domingo, 1 de mayo de 2022

Obtener el recuento de dígitos de n números, error de tiempo de espera (¿Cuántas páginas en un libro? de codewars)

Problema: Dado el resumen, encuentra el número de páginas n que tiene el libro.

Ejemplo Si la entrada es resumen=25, entonces la salida debe ser n=17: Los números del 1 al 17 tienen 25 dígitos en total: 1234567891011121314151617.

Todas las entradas serán válidas.

Mi solución actual

function amountOfPages(summary){
let n=1; let arrKc=[1]

while((arrKc.join('').toString().length)!=summary){

arrKc.push( n.toString())

n++
}

return n

}

Todas las pruebas pasan pero aparece un error de tiempo de espera como se muestra a continuación

ingrese la descripción de la imagen aquí


Solución del problema

Aquí está mi código,

Veo un patrón aquí para encontrar el conteo de dígitos

9 + 9 * 10 power 1 * 2 + 9 * 10 power 2 * 3 +...+ 9 * 10 power n-1 * n Mi solución se basa en el patrón anterior.


function initialLoad() {
document.getElementById("outcome").innerHTML = "Answer: "+ amountOfPages(25);
}
function amountOfPages(summary) {
var n = summary;
var totalNumbersSoFar = 0;
var pagesSoFar = 0;
var ninthDigit = "9";
while (parseInt(ninthDigit) < (n / ninthDigit.length)) {
var numbersInRange = Math.pow(10, ninthDigit.length - 1) * 9;
pagesSoFar += numbersInRange * ninthDigit.length;
n -= numbersInRange;
totalNumbersSoFar += numbersInRange;
ninthDigit += "9";
};
return ((summary - pagesSoFar) / ninthDigit.length) + totalNumbersSoFar;
};

 <HTML>
<HEAD>
</HEAD>
<BODY id="outcome" onload="initialLoad()">
<h1>
</h1>
</BODY>
</HTML>

No hay comentarios.:

Publicar un comentario

Flutter: error de rango al acceder a la respuesta JSON

Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...