Las sacas que se acumulan
- O(log n) · Fácil
- Gratis
- Python
- JavaScript
- operaciones
- búsqueda
- ciclos
Enunciado
Onésimo atiende la ventanilla de correos de un pueblo que acaba de aparecer en el mapa. El primer día le llegaron primera sacas de correo, y cada día siguiente le llegan mas sacas más que el día anterior: si el primer día llegaron 3 y cada día llegan 2 más, el segundo día llegan 5, el tercero 7, el cuarto 9, y así. Nada se reparte todavía, así que las sacas se van apilando en la bodega.
Escribe una función que reciba primera (de 1 en adelante), mas (de 0 en adelante) y cupo (de 1 en adelante), y regrese el número del día en que lo apilado llega al cupo o lo pasa. El primer día es el día 1.
Con primera igual a 3, mas igual a 2 y un cupo de 100: el día 1 hay 3 sacas apiladas, el día 2 hay 8, el día 3 hay 15... el día 9 hay 99, que todavía no alcanza, y el día 10 hay 120. Regresas 10.
Si mas es 0 llegan las mismas sacas todos los días. Y si el primer día ya llega al cupo, regresas 1.
primera y mas llegan hasta mil millones y el cupo hasta un billón, o sea un millón de millones. Con pocas sacas al día eso son cientos de miles de millones de días: sumar día por día no termina.
Lo que sí sale de una cuenta, sin sumar día por día, es cuántas sacas hay apiladas en un día cualquiera. Vuelve al ejemplo: con primera igual a 3 y mas igual a 2, al día 4 llegaron 3, 5, 7 y 9 sacas, y apiladas hay 24. Esas 24 son las 3 del primer día contadas cuatro veces, o sea 12, más el aumento que se fue juntando: 0, 2, 4 y 6, que suman otros 12. Y ese 0, 2, 4, 6 tampoco hace falta sumarlo de uno en uno. Con esa cuenta puedes ir partiendo el rango de días por la mitad. Pero ojo: aquí nadie te dio un día tope del cual partir, y tienes que conseguirlo antes de partir nada.
Ejemplos
El del ejemplo
3, 2, 100 → 10
El cupo cae justo en un día
3, 2, 99 → 9
Las mismas sacas todos los días
4, 0, 30 → 8
El primer día ya alcanza
50, 10, 50 → 1
Crecen rápido
1, 3, 10 → 3
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def dia_cupo(primera, mas, cupo):
passJavaScript
function diaCupo(primera, mas, cupo) {
}Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.