Напишите программу, которая определяет, что на что похоже. Формат ввода
Вводятся строки, в которых числа записаны через произвольное количество пробелов.
Формат вывода
Из каждой строки выбрать числа, у которых в числе десятков стоит та же цифра, что и у последнего числа в строке, но которые не кратны первому числу в этой же строке.
Выводить через три точки в порядке ввода, первое и последнее числа в рассмотрении не участвуют.
Пример 1
Ввод Вывод
4 297 252 3555 152 51
3 297 298 911 599 220 295
28 378 109 211 171
78 47 2641 144 243
287 105
6 1305 256 300 2704 3
3555
298...599
378
47...2641...144
1305...2704
Пример 2
Ввод Вывод
24 50 79 231 223 20
163 57
16 266 164 64 167
223
266...164
Примечания
В строке не менее двух чисел.
Для перевода целого числа из десятичной системы в двоичную выполняем его целочисленное деление на два с сохранением остатка. Если частное больше единицы, делим его на два, снова сохраняем остаток и т.д. Как только частное станет равным 1 или 0, записываем его, а затем приписываем к нему слева остатки в порядке, обратном их получению.
56 / 2 = 28 (остаток 0)
28 / 2 - 14 (остаток 0)
14 / 2 = 7 (остаток 0)
7 / 2 = 3 (остаток 1)
3 / 2 = 1 (остаток 1)
Записываем результат. 56(10) = 111000(2)
Переводы в десятичную систему счисления выполняются путем записи числа в расширенном виде по основанию системы счисления, в которой представлено число. А далее операции выполняются в десятичной системе.
Переводы чисел между системами счисления по основаниям, кратным степеням двойки (2,4,8,16) выполняется через двоичную систему счисления, как через промежуточную. Например, при переходе от восьмеричной системы к шестнадцатиричной, мы учитываем, что , каждую восьмеричную цифру заменяем тремя двоичными (триадой) и получаем двоичное число. А затем, зная что , мы группируем двоичные разряды справа налево по четыре, получая тетрады. И, наконец, каждую тетраду мы заменяем соответствующей шестнадцатиричной цифрой. Описывать этот процесс долго, а перевод делается быстро.
3) 77(8) = 111 111(2) = 11 1111(2) = 3F(16)
4) 57(8) = 101 111(2) = 101111(2)
5) 9A(16) = 1001 1010(2) = 10011010(2)
7) 10011(2) = 010 011(2) = 23(8)
8) 101011(2) = 0010 1011(2) = 2B(16)
Последовательное построение алгоритма
Существуют различные методы конструирования (разработки, построения) алгоритмов. Один из них — методпоследовательного построения (уточнения) алгоритма. Иначе он называется методом разработки «сверху вниз», нисходящим методом или методом пошаговой детализации.
Суть метода:
• задачу разбивают на несколько частей, каждая из которых проще всей задачи;
• решение каждой части задачи формулируют в отдельной команде, которая также может выходить за рамки системы команд исполнителя;
• при наличии в алгоритме предписаний, выходящих за пределы возможностей исполнителя, такие предписания вновь представляются в виде совокупности ещё более простых предписаний.
Процесс продолжается до тех пор, пока все предписания не будут понятны исполнителю.
Вс алгоритм делает структуру алгоритма более понятной.
При конкретном обращении к вс алгоритму формальные параметры заменяются фактическими параметрами, т. е. именно теми величинами, для которых будет исполнен вс алгоритм. Типы, количество и порядок следования формальных и фактических параметров должны совпадать.
Алгоритм, в котором прямо или косвенно содержится ссылка на него же как на вс алгоритм, называют рекурсивным.