Написать программу, которая по заданным k, m и t определяет общее количество времени, которое понадобилось для измерения времени

Требуется отмерить t минут, потратив на это минимальное количество времени. Для этих целей есть двое песочных часов, первые из которых могут отмерять k минут, а вторые - m минут. Песок в этих часах сыпется неравномерно, и поэтому точно время можно определить, только когда песок в часах пересыпается полностью.

Требуется написать программу, которая по заданным k, m и t (все числа натуральные и не превышают 32000) определяет общее количество времени, которое понадобилось для измерения времени (если это возможно).

Например, k=3, m=2 и требуется отмерить t=5 минут. Сначала устанавливаем первые часы, после полного пересыпания песка устанавливаем вторые часы, в итоге отмеряем 5 минут. Если этими же часами нужно отмерить одну минуту, то одновременно ставятся первые и вторые часы, затем, в момент полного пересыпания песка в часах на 2 мин., устанавливается начало отсчета измеряемого времени, в момент полного пересыпания песка в часах на 3 мин. заканчиваем измерение одной минуты. Таким образом, на измерение одной минуты было затрачено 3 минуты.

Формат входных данных:
С клавиатуры вводится три числа k, m, t (1 <= k, m , t <= 32000).

Формат выходных данных:
На экран выводится целое число – время, затраченное на то, чтобы отмерить заданный промежуток. Если отмерить t минут невозможно, то следует напечатать строку «NO» (без кавычек).

code: #basic
CLS
INPUT "vv a ", a
INPUT "vv b ", b
INPUT "vv t ", t
IF a < b THEN SWAP a, b
FOR i = 0 TO t + a
FOR j = 0 TO t + a
IF i * a + j * b = t THEN rez = i * a + j * b: f = 1
NEXT
NEXT
FOR i = 0 TO t + a
FOR j = 0 TO t + a
IF f = 0 THEN IF i * a + j * b + (a - b) = t THEN rez = i * a + j * b + a:
NEXT
NEXT
IF rez = 0 THEN PRINT "no" ELSE PRINT rez

автор: кот Бегемот

Поделиться:

Похожие статьи: