
Всего "троек" может быть 7, 14, 21 и 28.
Всего "четвёрок" может быть 5, 10, 15, 20, 25, 30.
Известно, что "троек" больше, чем четвёрок и пятёрок, значит, троек не может быть больше 21, а "четвёрок" не может быть больше 10 (в противном случае оценок будет больше 30).
Пусть x "пятёрок", y "четвёрок", z "двоек":
1) "троек" 7, тогда сумма оценок
7*3+5x+4y+2z = 90
5x+4y+2z = 69
Очевидно, что из слагаемых 2, 4 и 5 невозможно получить сумму 69.
2) "троек" 14, тогда сумма оценок
14*3+5x+4y+2z = 90
5x+4y+2z = 48
48 можно получить путём сложения цифр 2, 4 и 5.
Пусть "четвёрок" 5, тогда сумма оценок
5x+4*5+2z = 48
5x+2z = 28
То есть нужно разделить сумму 28 между (30-14-5) = 11 "двойками" и "пятёрками", или

Итого получаем:
"пятёрок" - 2
"четвёрок" - 5
"троек" - 14
"двоек" - 9
Простыми преобразованиями эту задачу не решить, будем использовать арифметику остатков.
1-ое свойство, которое понадобится

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

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

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

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

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

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