Скрутні часи

Вирішимо задачу за допомогою симуляції розкладу цього місяця підраховуючи кількість зроблених задач кожного дня. Для кращого розуміння нижче наведений код. Позначимо поточний день за $$$d$$$, початково він рівний 1. Тоді у циклі поки $$$d$$$ не перевищує кількість днів у місяці будемо підраховувати відповідь. Врахуємо перші $$$a$$$ днів, розглянувши послідовно кожен день: якщо $$$d$$$ кратне $$$n$$$, то це день хаотичного відпочинку, бо кожен $$$n$$$-тий день є таким, відповідно у цей день ніякої роботи зроблено не буде. Інакше цей день є робочим. У такому випадку перевіримо чи він є днем подвійної ефективності завдяки аналогічній перевірці на кратність числа $$$d$$$ числу $$$m$$$, якщо воно кратне, то збільшимо відповідь на $$$2$$$, інакше тільки на $$$1$$$, бо день був звичайним. Оскільки були оброблені $$$a$$$ днів, то наступні $$$b$$$ днів є гарантовано вихідними. Тоді просто пропустимо їх збільшивши $$$d$$$ на $$$b$$$, бо ніякої роботи у цей період не буде.

    int res = 0;
    int d = 1;
    while (d <= k) {
        for (int i = 0; i < a && d <= k; i++) {
            if (d             res += 0;
            } else if (d             res += 2;
            } else {
                res += 1;
            }
            d++;
        }
        d += b;
    }