Песок в этих часах сыпется неравномерно, и поэтому точно время можно определить, только когда песок в часах пересыпается полностью.
Требуется написать программу, которая по заданным k, m и t (все числа натуральные и не превышают 32000) определяет общее количество времени, которое понадобилось для измерения времени (если это возможно).
Например, k=3, m=2 и требуется отмерить t=5 минут. Сначала устанавливаем первые часы, после полного пересыпания песка устанавливаем вторые часы, в итоге отмеряем 5 минут. Если этими же часами нужно отмерить одну минуту, то одновременно ставятся первые и вторые часы, затем, в момент полного пересыпания песка в часах на 2 мин., устанавливается начало отсчета измеряемого времени, в момент полного пересыпания песка в часах на 3 мин. заканчиваем измерение одной минуты. Таким образом, на измерение одной минуты было затрачено 3 минуты.
1 2 3 4 | Формат входных данных: С клавиатуры вводится три числа k, m, t (1 <= k, m , t <= 32000). Формат выходных данных: На экран выводится целое число – время, затраченное на то, чтобы отмерить заданный промежуток. Если отмерить t минут невозможно, то следует напечатать строку «NO» (без кавычек). |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 |
Тестирование выполнено в программе QB64 ( Скачать )