Задача про примету Васи

Проверьте, сработает ли примета Васи! Узнайте, скрываются ли в ваших цифрах тайные знаки судьбы, и поймите алгоритм загадывания желаний.

Вася – настоящий любитель цифр․ Он считает, что в любой трёхзначной комбинации (номер машины, квартира и т․п․) скрыты тайные знаки судьбы․ Его «примета» выглядит так:

  1. Берём три цифры a, b и c․
  2. Считаем три попарные суммы: a + b, b + c, a + c․
  3. Если хотя бы одна из этих сумм делится на 3, то Вася загадывает желание․

Наша задача – по заданным трём цифрам определить, выполнится ли условие приметы и вывести «да» или «нет»․

Формулировка задачи

Входные данные – три целых числа от 0 до 9 (возможны ведущие нули)․
Выходные данные – слово да, если хотя бы одна из сумм a+b, b+c или a+c делится на 3, иначе – слово нет;

Математический фон: признак делимости на 3

Из школьной программы известен простой признак делимости на 3:

  • Число делится на 3 тогда и только тогда, когда сумма его цифр делится на 3․

Для нашей задачи это правило применяется к сумм a+b, b+c и a+c․ Поскольку каждая из этих сумм – обычное целое число, проверка делимости сводится к вычислению остатка от деления на 3:

if (sum % 3 == 0) → делится

Алгоритм решения

Алгоритм предельно прост:

  1. Считать три цифры a, b, c․
  2. Вычислить три суммы:
    • s1 = a + b
    • s2 = b + c
    • s3 = a + c
  3. Проверить, делится ли хотя бы одна из сумм на 3:
    if (s1 % 3 == 0 or s2 % 3 == 0 or s3 % 3 == 0):
     answer = "да"
    else:
     answer = "нет"
  4. Вывести полученный ответ․

Доказательство корректности

Пусть a, b, c – любые цифры (0 ≤ a,b,c ≤ 9)․ Мы рассматриваем три попарные суммы:

  • s1 = a + b
  • s2 = b + c
  • s3 = a + c

Если хотя бы одна из этих сумм делится на 3, то по определению приметы Вася загадывает желание․ Алгоритм проверяет именно это условие, используя оператор % 3, который возвращает остаток от деления․ Остаток равен 0 ⇔ число кратно 3․ Поэтому алгоритм возвращает «да» тогда и только тогда, когда условие приметы выполнено․ Следовательно, алгоритм корректен․

Оценка сложности

Алгоритм использует фиксированное количество арифметических операций и проверок, независимо от входных данных․ Поэтому:

  • Временная сложность – O(1) (константное время)․
  • Память – O(1) (только несколько целочисленных переменных)․

Реализация на Python

Ниже приведён полностью готовый пример решения, совместимый с любой современной версией Python (3․x)․

#!/usr/bin/env python3

def will_wish(a: int, b: int, c: int) -> str:
 """
 Возвращает 'да', если хотя бы одна из попарных сумм
 a+b, b+c, a+c делится на 3, иначе – 'нет'․
 """
 if (a + b) % 3 == 0 or (b + c) % 3 == 0 or (a + c) % 3 == 0:
 return "да"
 return "нет"

def main:
 import sys

 # Читаем три цифры из стандартного ввода․
 # Формат ввода может быть: "1 4 7" или "147" – поддерживаем оба варианта․
 data = sys․stdin․read․strip․split
 if len(data) == 1 and len(data[0]) == 3:
 # Один токен из трёх символов, разбиваем на отдельные цифры․
 a, b, c = map(int, data[0])
 else:
 # Ожидаем три отдельных числа․
 a, b, c = map(int, data[:3])

 print(will_wish(a, b, c))

if __name__ == "__main__":
 main

Примеры работы программы

Ввод Пояснение
1 2 3 да 1+2=3 делится на 3 → желание․
4 5 6 да 4+5=9 делится на 3․
1 1 1 нет Все суммы равны 2, не кратны 3․
0 0 0 да Любая сумма = 0, а 0 делится на 3․

Задача о Васе и его примете – отличный пример того, как простое арифметическое правило (делимость на 3) может стать основой для небольшого алгоритмического упражнения․ Мы разобрали математический смысл, сформулировали алгоритм, доказали его корректность и оценили эффективность․ Теперь любой желающий может быстро реализовать решение на любом удобном языке программирования․


Дата генерации статьи: 14 августа 2026 г․