Editorial for Número de Bestias
Submitting an official solution before solving the problem yourself is a bannable offence.
Authors:
, ,El problema nos pide encontrar la cantidad de números en el intervalo que contienen exactamente n bits activos en su notación en binario. Sea
la solución a nuestro problema, luego \(g(a,b,n) = f(b,n) – f(a-1,n)\) donde
es la cantidad de números en el intervalo
que contienen n bits activos en su notación en binario. Entonces el problema que tenemos ahora es calcular
, para ello lo primero es llevar a
a binario. Sea
la cantidad de dígitos de
(en binario), luego la cantidad de números de hasta
dígitos que tienen
bits activos seria
que denota la combinatoria de
objetos en
lugares. Luego resta contar los números menores que
que tienen
dígitos. Para ello iteramos por los dígitos de
, desde el bit más significativo al menos significativo, si el bit i esta encendido contamos la cantidad de números que son iguales a
hasta el bit
( en este caso el bit
es más significativo que el bit
) y que tiene el bit i apagado, que sería
, donde
es la cantidad de lugares que me restan por analizar y
es la cantidad de bits que me faltan por colocar, es decir,
– bits activos en
hasta el bit
. El único caso que resta es contar que el propio
tenga
bits activos. Complejidad:
.
Comments