Насколько я понимаю, тут по сути можно всё упростить:
1) Есть собака, которая бегает (неважно от кого к кому и куда), со скоростью 12 км/ч определённое время.
2) И есть два пешехода, которые определяют это время. Сближаясь друг с другом, они пройдут эти 16 километров (а идут навстречу друг другу, значит их скорости суммируются) за время, которое легко рассчитать.
S = 16 км
v1 = 3 км/ч
v2 = 5 км/ч
v3 = 12 км/ч
S3 - ?
Общая скорость пешеходов равна:
v = v1 + v2 = 3 + 5 = 8 км/ч
Их время в пути (оно же и время в пути собаки):
t = S / v = 16 / 8 = 2 ч
Расстояние, которое за это время пробежит собака:
S3 = v3 * t = 12 * 2 = 24 км
ответ: собака пробежала 24 километра.
Простыми преобразованиями эту задачу не решить, будем использовать арифметику остатков.
1-ое свойство, которое понадобится

То есть мы спокойно можем заменить каждое слагаемое сравнимым с ним по модулю m. То есть каждое слагаемое в нашей сумме будем рассматривать отдельно.
2-ое свойство, которое нам понадобится:

То есть довольно аналогичная вещь в произведении
На нашем примере все увидим

Находим остатки по модулю 31
Рассматриваем первое слагаемое. Просто двойка не годится, нам нужно найти ближайшее к 31 число, превосходящее его (иногда там в отрицательные числа залезаем, например,
, но сейчас это не нужно), нам повезло, это 32
Учитываем, что
, получаем

То есть остаток от деления первого слагаемое на 31 получился равным 10. Прекрасно, аналогично со вторым

Остаток 21, чудесно. Выполняем последний шаг.

То есть остаток от деления исходного числа на 31 равен 0, следовательно, исходное число делится на 31, что и требовалось доказать.