
Розв’язок олімпіадної задачі з програмування Золота середина
17 Листопада, 2019
Розв’язок олімпіадної задачі з програмування Лелеки
18 Листопада, 2019Розв'язок олімпіадної задачі пробного туру з програмування 2019 року "Площа"
Використовується мова програмування Python 3
Правильність розв'язку - 88/100
Площа
Площа в рідному місті Степана являє собою прямокутник M × N метрів. З нагоди ювілею міста було прийнято рішення про замощення площі прямокутними гранітними плитами. Кожна плита має розмір K × L метрів. Ювілей зовсім близько, але робочі так і не змогли визначити, яку найменшу кількість плит знадобиться для замощення площі. Степан моментально придумав рішення для цього завдання. А чи зможете придумати його Ви? Дозволено покрити плитами поверхню більшу, ніж площа, але сама площа повинна бути покрита обов'язково. Гранітні плити не можна ламати або дробити, їх дозволено використовувати тільки цілком. Плити можна повертати, але їх сторони повинні бути паралельні сторонам площі. Якщо сторони плити різного розміру (якщо плита не квадратна), сторони однакової довжини всіх плит повинні бути паралельні одна одній.
Формат вхідних даних:
У першому рядку вхідних данних записано 4 цілих числа N, M, K, L (1 ≤ N, M, K,L ≤ 100000).
Формат вихідних даних:
Потрібно вивести одне число - мінімальну кількість плит, яка буде потрібна для замощення площі згідно з описаними вимогами.
Examples
Input
3 2 2 2
Output
2
Input
4 2 1 4
Output
2
Обмеження
Full score: 100
Time limit: 100 ms
Real time limit: 5 s
Memory limit: 64M
Розв'язок
N, M, K, L = map(int, input().split()) if N%K==0 and M%L==0: print((N*M)//(K*L)) elif N%L==0 and M%K==0: print((N*M)//(K*L)) elif N%K==0: print(N//K*(M//L+1)) elif N%L==0: print(N//L*(M//K+1)) elif M%K==0: print(M//K*(N//L+1)) elif M%L==0: print(M//L*(N//K+1)) else: print((M//L+1)*(N//K+1))