e-olymp 7492. Будильник

Задача

Алиса любит свой цифровой будильник. Она устанавливает его каждый вечер. Прошлой ночью Алисе приснились ее часы. К сожалению, единственное, что она помнит — так это количество отображаемых сегментов на часах. Алиса хочет узнать, какое время показывали ее часы во сне.

Часы Алисы содержат четыре цифры: две для часов и две для минут. Например, часы ниже показывают [latex]9[/latex]:[latex]30[/latex] (ведущий ноль высвечивается).

Часы имеют следующее представление цифр:

Входные данные

Одно целое число [latex]n (0≤ n ≤30)[/latex] — количество подсвеченных сегментов на часах Алисы во сне.

Выходные данные

Вывести пять символов в формате [latex]hh:mm[/latex] — время, показываемое часами Алисы во сне. Время должно быть корректным: [latex]0 ≤ hh < 24[/latex] and [latex]0 ≤ mm < 60[/latex]. Если существует несколько решений, то вывести любое. Если решения не существует, то вывести [latex]Impossible[/latex].

Тесты

Входные данные Выходные данные
23 00:02
28 Impossible
0 Impossible
15 01:12

Код программы

Решение

Перебираем i и j (от 0 до 24 и 60 соответственно). a=seg[i/10] (для десятков) и a=seg[i%10] (для остальных чисел) то же самое делаем для j. Тем самым, мы перебираем все возможные варианты количества сегментов. Если a==n (количество сегментов) при переборе и в входных данных совпадает, то выводим наше время и выходим из цикла. Если же при переборе не было такого же числа сегментов, как в входных данных, то решения нет и мы, соответственно, выводим [latex]Impossible[/latex].

Ссылки

e-olymp
Ideone

3 thoughts on “e-olymp 7492. Будильник

  1. Почему вы выделили только случай $n=0$, а остальные, например, $n=30$?
    Цикл while можно было не использовать, добавив return 0; нескольких местах.

    • Поясню.
      — Сроки 6-9 лишние.
      — Строки 5 и 10 должны выглядеть как одна — while(cin >> n) {.
      — Строки 30 и 31 нужны, чтобы выйти из обоих вложенных циклов. В данном случае делаем просто return 0;.
      — Строки 34 и 36 уже лишние, если Вы учтете предыдущую рекомендацию.
      — И, конечно, переменная q теперь не нужна.

    • Пожалуйста, сделайте правильные отступы. Если не знаете как, посмотрите в разделе «Вопросы».
    • Решение очень не эффективное. Например, Вы увидели, что 1 не может быть так как слишком много сегментов. Но, продолжаете проверять другие цифры с бОльшим числом сегментов. Сейчас не будем ничего менять в алгоритме, но потом, если Вы придумаете более эффективное решение, его можно будет зачесть еще раз в другом разделе.

Добавить комментарий