Задача про монахов
Имеется 3 группы монахов: ведущие, простые, ученики. M монахов едят N пирогов по чину.
Ведущий по N1 пирогов, простой по N2 пирогов, ученики по N3 пирогов (N, N1, N2, N3 - могут быть целыми и дробными числами).
Сколько было монахов: ведущих (M1), простых (M2) и учеников (M3). Исходные данные
M - количество монахов всего
N - количество пирогов всего
N1 - количество пирогов, съедаемым одним ведущим монахом
N2 - количество пирогов, съедаемым одним простым монахом
N2 - количество пирогов, съедаемым одним монахом-учеником Результаты
M1 - количество ведущих монахов
M2 - количество простых монахов
M3 - количество монахов-учеников
Попытаюсь:
Для каждого - это значит действие будет повторяться несколько раз ( N/N1 ) - тоесть вы получите несколько систем уравнений которые могут иметь решение. При этом он учел что M1 не может быть больше N/N1, что косвенно задано начальными условиями.
А если так, как я понимаю, получается вот так:
М1 * П1 + М2 * П2 + М3 * П3 = П
М1 + М2 + М3 = М
Система уравнений с тремя неизвестными, но только двумя уравнениями. Слишком мало уравнений получается, вариантов решения может быть много.
Хотя с другой стороны, в целых числах может быть и одно решение.
При генерации входных данных тщательно проверяйте, чтобы целочисленное решение было одно.
вот:
M = 100, M1 = 5, M2 = 50 ; M3 = M - M1 - M2 = 45 правильно?
подставляем 45 во второе уравнение и если общее количесво полученное равно общему количесву заданному - то это одно из решений. и так подставляя вместо М1 и М2 числа от 1 до M
Тоесть для М1 = 1 меняем М2 от 1 до М, потом для M1 = 2 меняем М2 от 1 до М - каждый раз проверяем подходят ли эти значения, если подходят сохраняем их к вариантам решений
тут вопрос в условии, если читать буквально, то система уравнений такая:
N = N1*M1 + N2*M2 +N3*M3
M = M1 + M2 + M3
M1>=0
M2>=0
M3>=0
очевидно - её можно решить, но решений может быть больше 1го
тривиальный алгоритм - перебором всех возможных M1,M2,M3