Saltar al contenido

Las parcelas cuadradas

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):
    pass

JavaScript

function lado(ancho, largo, cuantas) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.

Más retos de O(log n)

Ver todos los retos →