Мне дали домашнее задание класса C, а именно:
Трасса Hyperloop строится из отдельных отрезков трубы определенной длины. Трасса начинается и заканчивается переборкой, и между каждыми двумя сегментами трубы есть переборка. Сегменты производятся двумя разными производителями (s1 и s2). Даны длины сегментов (s1, s2), переборок (b) и желаемого пути (l). Задача состоит в том, чтобы разработать функцию, которая будет на основе этих 4-х параметров решать, существуют ли допустимые комбинации отрезков и переборок, которые приведут к точной длине искомого пути, и, если они есть, выводить количество этих комбинаций .
Примечание: два разных отрезка могут быть равны по своей длине, длина переборки может также равняться нулю.
Мое мнение, что я должен решить линейное уравнение с 3 переменными:
(m)*s1 + (n)*s2 + (m+n+1)*b = l
Но я понятия не имею, какой метод мне следует использовать для написания эффективного кода.
m
иn
должны быть целыми неотрицательными числами. Существуют ли какие-либо ограничения на заданные значенияs1
,s2
,b
иl
, кроме того, что они неотрицательны? Будут ли они целыми, рациональными числами или просто действительными числами? Если целые числа, это хорошо изученная проблема диофантовых уравнений. Если рациональные числа, умножив уравнение на наименьший общий знаменатель, вы получите целое число. Ограничения будут определять ваш подход. Что вы знаете о диофантовых линейных уравнениях с двумя переменными? - person Rory Daulton   schedule 15.11.2018m
иn
. Какую третью переменную вы видите? И если данные константы являются рациональными числами, аm
иn
должны быть целыми неотрицательными числами, то будет только конечное число решений (возможно, ни одного). - person Rory Daulton   schedule 15.11.2018Progtest
домашнее задание отProgramming and algorithmics 1
вCVUT
(Чешский технический университет). Этот вопрос был задан, когда домашнее задание было еще открыто для сдачи. - person Elliott   schedule 25.07.2021