Розв’язок олімпіадної задачі з програмування “Ящики”

Розв’язок олімпіадної задачі з програмування “Турист Василь”
20 Листопада, 2019
Розв’язок олімпіадної задачі з програмування “Різниця”
21 Листопада, 2019

Розв'язок олімпіадної задачі пробного туру з програмування 2019 року "Ящики"

Використовується мова програмування Python 3

Ящики

Відомо, що цього року Гриць зібрав N мандаринів. Також ми знаємо, що один ящик може вмістити максимум M мандаринів. Гриць намагається використати для пакування якомога меншу кількість ящиків. Але поряд з економією грошей наш головний герой є дуже забобонним і ніколи не допустить того, щоб кількість мандаринів у ящику була кратна 13. Також він слідкує за тим, щоб загальна кількість використаних ящиків не була кратна 13. Вам потрібно знайти мінімально можливу кількість ящиків, необхідну для упакування всіх мандаринів, дотримуючись всіх забобонних правил Гриця.

Формат вхідних даних:

Два цілих числа N і M (1 ≤ N, M ≤ 109).

Формат вихідних даних:

Виведіть одне число – шукану кількість ящиків, або -1, якщо через свої забобони Гриць не зможе розставити мандарини взагалі.

Examples

Input

37 3

Output

14

Обмеження

Full score: 100

Time limit: 100 ms

Real time limit: 5 s

Memory limit: 64M

Я не профі в розв'язуванні олімпіадних задач з програмування, але можливо і мій розв'язок буде комусь корисним. Якщо хтось знає повний розв'язок на 100 балів, додайте його в коментах будь ласка, буду дуже вдячний.

Розв'язок

Правильність розв'язку - 65/100

N, M = map(int, input().split())
if M>=N:
    s=1
elif M%13!=0:
    if N%M==0:
        s=N//M
        if s % 13 == 0:
            s = s + 1
    elif N%M!=0:
        s=N//M+1
        if s % 13 == 0:
            s = s + 1
elif M%13==0:
    M=M-1
    if N%M==0:
        s=N//M
        if s % 13 == 0:
            s = s + 1
    elif N%M!=0:
        s=N//M+1
        if s % 13 == 0:
            s = s + 1
else:
    s=-1
print(s)

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *