Las parcelas cuadradas
- O(log n) · Fácil
- Gratis
- Python
- JavaScript
- división
- búsqueda
- operaciones
Enunciado
A don Aniceto, el agrimensor del valle, le encargaron partir un terreno de ancho por largo varas en parcelas cuadradas, todas del mismo tamaño y acomodadas en filas y columnas parejas. Las parcelas no se cortan ni se giran: la tira que sobra en la orilla se queda de linde, sin repartir, y no le toca a nadie.
El dueño pidió al menos cuantas parcelas, y don Aniceto las quiere lo más grandes posible, porque una parcela chica no da para sembrar.
Escribe una función que reciba ancho, largo y cuantas (los tres de 1 en adelante) y regrese el lado más grande, en varas enteras, con el que salen cuantas parcelas o más. Si ni con lado 1 alcanza, regresas 0.
Con un terreno de 10 por 9 varas y 4 parcelas pedidas, el lado es 4: caben dos parcelas a lo ancho y dos a lo largo, o sea 4, y de linde queda una tira de 2 varas por un lado y de 1 vara por el otro. Con lado 5 solo cabrían dos parcelas, así que 4 es lo más grande que sirve.
Con un terreno de 100 por 60 y 7 parcelas pedidas, el lado es 25: caben 4 parcelas a lo ancho y 2 a lo largo, o sea 8.
Con un lado fijo, cuántas parcelas caben a lo ancho y cuántas a lo largo son dos divisiones enteras. Y fíjate en algo: mientras más grande el lado, menos parcelas salen, nunca más. Ese orden es lo que te deja partir el rango de lados por la mitad en vez de probarlos todos.
ancho, largo y cuantas llegan hasta mil millones, así que probar lado por lado no termina. Y cuidado con el tamaño de los números: en un terreno de mil millones por mil millones, con lado 1 salen un trillón de parcelas, y un número así ya no le cabe exacto a JavaScript. Fíjate bien con qué comparas, para no tener que llegar hasta allá.
Ejemplos
El del ejemplo
10, 9, 4 → 4
Cien por sesenta
100, 60, 7 → 25
Ni con lado 1 alcanza
3, 3, 10 → 0
Una sola parcela, el terreno entero
1000000000, 1000000000, 1 → 1000000000
El terreno de una vara de largo
1000, 1, 3 → 1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def lado(ancho, largo, cuantas):
passJavaScript
function lado(ancho, largo, cuantas) {
}Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.