Задача
Алиса любит свой цифровой будильник. Она устанавливает его каждый вечер. Прошлой ночью Алисе приснились ее часы. К сожалению, единственное, что она помнит — так это количество отображаемых сегментов на часах. Алиса хочет узнать, какое время показывали ее часы во сне.
Часы Алисы содержат четыре цифры: две для часов и две для минут. Например, часы ниже показывают [latex]9[/latex]:[latex]30[/latex] (ведущий ноль высвечивается).
Часы имеют следующее представление цифр:
h1>Входные данные
Одно целое число [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 |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
import java.util.*; import java.lang.*; import java.io.*; class Main { public static void main (String[] args) throws java.lang.Exception { Scanner in = new Scanner(System.in); int n; while (in.hasNextInt()) { n = in.nextInt(); int[] seg = {6, 2, 5, 5, 4, 5, 6, 3, 7, 6}; for (int i = 0; i < 24; i++) for (int j = 0; j < 60; j++) { int a = 0; a = a + seg[i / 10]; a = a + seg[i % 10]; a = a + seg[j / 10]; a = a + seg[j % 10]; if (a == n) { if (i < 10) System.out.printf("0%d", i); else System.out.print(i); System.out.print(":"); if (j < 10) System.out.printf("0%d", j); else System.out.print(j); return; } } System.out.print("Impossible"); } in.close(); return; } } |
Решение
Перебираем [latex]i[/latex] и [latex]j[/latex] (от [latex]0[/latex] до [latex]24[/latex] и [latex]60[/latex] соответственно). [latex]a=seg[i/10][/latex] (для десятков) и [latex]a=seg[i[/latex]%[latex]10][/latex] (для остальных чисел) то же самое делаем для [latex]j[/latex]. Тем самым, мы перебираем все возможные варианты количества сегментов. Если [latex]a==n[/latex] (количество сегментов) при переборе и в входных данных совпадает, то выводим наше время и выходим из цикла. Если же при переборе не было такого же числа сегментов, как в входных данных, то решения нет и мы, соответственно, выводим Impossible