Алгоритм вычисления функции \(F(n),\) где \(n\) – неотрицательное число, задан следующими соотношениями:
Найдите количество таких чисел в диапазоне от \(123~456~789\) до \(213~789~654,\) для которых \(F(n)\) не делится на \(5.\)
Решение:
Функция \(F(n)\) может быть преобразована следующим образом: $$F(n) = F(n-1) + 3 \cdot n = F(n-2) + 3 \cdot (n - 1) + 3 \cdot n = \ldots = 3 \cdot 1 + 3 \cdot 2 + \ldots + 3 \cdot (n - 1) + 3 \cdot n = $$ $$= 3 \cdot (1 + 2 + \ldots + (n - 1) + n) = 3 \cdot S(n)$$ Здесь \(S(n)\) — сумма натуральных чисел от \(1\) до \(n.\) Очевидно, что \(F(n)\) делится на \(5,\) тогда и только тогда, когда \(S(n)\) делится на \(5.\) Рассмотрим первые пять натуральных чисел. Для остальных чисел результат будет повторяться с периодом \(5.\)
| \(n\) | \(1\) | \(2\) | \(3\) | \(4\) | \(5\) |
|---|---|---|---|---|---|
| \(S(n)\) | \(1\) | \(3\) | \(6\) | \(10\) | \(15\) |
| \(S(n) \, \% \, 5\) | \(1\) | \(3\) | \(1\) | \(0\) | \(0\) |
Видно, что \(S(n)\) делится на \(5,\) если \(n\) делится на \(5\) (имеет остаток от деления на \(5,\) равный \(0)\) или если остаток деления \(n\) на \(5\) равен \(4.\)
Получаем, что $$123~456~789 \, \% \, 5 = 4$$ Это число не удовлетворяет условию задачи. Следующее число тоже не походит: оно имеет остаток от деления на \(5,\) равный \(0.\) Далее $$213~789~654 \, \% \, 5 = 4$$ Это число не удовлетворяет условию задачи. А три числа перед ним подходят. Оставшиеся числа разобьём на пятёрки. Из каждой пятёрки для трёх первых чисел \(F(n)\) не делится на \(5.\) Окончательно, находим ответ:
Python
print(3 + (213_789_649 - 123_456_790) // 5 * 3)
Ответ: \(54199716\)
Эффективно готовьтесь к ЕГЭ по информатике с новым тренажёром, эмулирующем работу станции КЕГЭ, которая используется на реальном экзамене