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