Автор задачі: | Хасан Салех (MathModel) |
Підготовлено: | Хасан Салех (MathModel) |
Редаговано: | Хасан Салех (MathModel) |
Є тестувальників, кожен з яких може провести співбесід на день, і є учасників. Кожна співбесіда вимагає присутності тестувальників і 1 учасника. Наша мета - мінімізувати кількість днів, тому ми повинні максимізувати продуктивність наступним чином:
тестувальників співбесід = співбесід загалом.
Максимальна продуктивність на день становить \lfloor \frac{xy}{z} \rfloor співбесід, оскільки ми хочемо обчислити кількість різних учасників, які проходять тестування. Ми ділимо на і використовуємо функцію округлення вниз, щоб позбутися десяткової частини.
Нарешті, ми ділимо кількість учасників на максимальну продуктивність на день, щоб отримати мінімальну кількість днів, і використовуємо , якщо є десяткова частина, щоб перенести це на наступний день:
Якщо 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)))