Співбесіди#12339

Співбесіди (Розбір)

Автор задачі:

Хасан Салех (MathModel)

Підготовлено:

Хасан Салех (MathModel)

Редаговано:

Хасан Салех (MathModel)

Є тестувальників, кожен з яких може провести співбесід на день, і є учасників. Кожна співбесіда вимагає присутності тестувальників і 1 учасника. Наша мета - мінімізувати кількість днів, тому ми повинні максимізувати продуктивність наступним чином:

тестувальників співбесід = співбесід загалом.

Максимальна продуктивність на день становить \lfloor \frac{xy}{z} \rfloor співбесід, оскільки ми хочемо обчислити кількість різних учасників, які проходять тестування. Ми ділимо на і використовуємо функцію округлення вниз, щоб позбутися десяткової частини.

Нарешті, ми ділимо кількість учасників на максимальну продуктивність на день, щоб отримати мінімальну кількість днів, і використовуємо , якщо є десяткова частина, щоб перенести це на наступний день:

\min(\text{дні})=\left \lceil \frac{p}{\left\lfloor \frac{xy}{z} \right\rfloor} \right\rceil

Якщо x<z, то це неможливо.

from math import *
for _ in range(int(input())):
    p,x,y,z=map(int,input().split())
    if(x<z):print(-1)
    else:
        print(ceil(p/((x*y)//z)))