Очень простые задачи

advertisement
18. Очень простые задачи
Ниже приведены задачи с простыми алгоритмами и легкой программной реализацией.
Аналогично некоторым распродажам, где все товары стоят одинаково дешево, каждая из
задач оценивается в 3-4 балла. Время работы по-прежнему не должно превышать 2 сек.
18.1. Кроссворд 2 (3). Кроссворд размещен в квадрате. Строки и столбцы квадрата нумеруются
снизу вверх и слева направо, начиная с 1. Поля для слов располагаются горизонтально либо
вертикально и задаются путем указания координат начальной и конечной клеток. Какая-либо
сортировка при задании полей отсутствует. Два пересекающихся слова могут располагаться как на
одной горизонтали либо вертикали, так и перпендикулярно друг другу. Требуется подсчитать
общее количество занятых клеток кроссворда.
Ввод. В первой строке файла INPUT.TXT задано количество слов кроссворда N (1 ≤ N ≤ 50). В
следующих N строках указываются через пробел координаты начальной и конечной клеток
очередного слова. Каждая координата является натуральным числом, не превосходящим 150.
Вывод. В единственной строке выходного файла OUTPUT.TXT должно содержаться общее
количество занятых клеток кроссворда.
Пример
Ввод
2
2 3 3 3
1 3 4 3
Вывод
4
18.2. Домино (3). Найти количество вариантов покрытия прямоугольника 2×N
прямоугольниками 2×1. Покрытия, которые преобразуются друг в друга симметриями, считать
различными.
Ввод. В единственной строке входного файла INPUT.TXT задано значение N (1 ≤ N ≤ 200).
Вывод. В единственной строке выходного файла OUTPUT.TXT должно содержаться
количество вариантов покрытия прямоугольника.
Пример
Ввод
5
Вывод
8
18.3. Усилители (3). Для питания машины времени Шурику необходимо получить напряжение
N вольт. Для этой цели используются усилители напряжения. В продаже имеются два типа
усилителей. У первого из них при входном напряжении K вольт на выходе получается 2K – 1
вольт, а у второго 2K + 1 вольт. Усилителей в магазине неограниченное количество. У Шурика в
распоряжении батарейка с напряжением 1 вольт. Шурик может последовательно соединять
усилители. Иными словами, входом первого усилителя служит батарейка, а входом каждого
последующего усилителя является выход предыдущего. Необходимо обойтись минимальным
числом усилителей. Помогите Шурику.
Ввод. В единственной строке файла INPUT.TXT содержится натуральное число N (2 ≤ N ≤ 109).
Вывод. Если можно собрать схему, описанную в условии, выведите в первой строке выходного
файла OUTPUT.TXT минимальное количество усилителей в схеме, а во второй строке
последовательность типов усилителей через пробел, начиная от батарейки. Выводите 1, если
используется усилитель первого типа, и 2, если второй. Если решения нет, выведите No.
Пример
Ввод
5
Вывод
2
2 1
18.4. Осмотр (4). Для того, чтобы быть допущенным к занятиям в бассейне, необходимо
предъявить справку, на которой должны поставить свои подписи K врачей. Некоторые врачи
отказываются ставить подписи на справке до тех пор, пока на ней не распишется другой врач.
Например, стоматолог отказывается ставить подпись, пока не будет принесена справка от
психиатра, потому что однажды его укусил психически неуравновешенный студент. Составлен
список, какому врачу нужны какие справки. Нужно определить, можно ли получить все справки, а
также в какой последовательности необходимо обходить врачей.
Ввод. В первой строке файла INPUT.TXT содержится общее количество врачей (1 ≤ K ≤ 100). В
следующих K строках описываются необходимые справки. Первое число j в i+1 строке входного
файла означает, сколько справок нужно i-му врачу. Затем, в той же строке, содержится j чисел номера врачей, чьи подписи надо предварительно поставить, чтобы получить подпись i-го врача.
Вывод. Если подписи всех врачей собрать невозможно, то в выходной файл OUTPUT.TXT
следует вывести NO. Если же все справки собрать возможно, то в первой строке выходного файла
должно содержаться YES, а в следующих K строках - последовательность, в которой нужно
получать справки.
Пример
Ввод
4
1 2
0
2 1 4
1 1
Вывод
YES
2
1
4
3
18.5. Квадраты (3). Составить программу, которая будет находить, на сколько квадратов
можно разрезать данный прямоугольник, если от него каждый раз отрезается квадрат
максимально большой площади. Стороны прямоугольника и квадратов выражены натуральными
числами.
Ввод. В первой строке файла INPUT.TXT стороны прямоугольника A и B (1 ≤ A, B ≤ 10000).
Вывод. Выходной файл OUTPUT.TXT содержит одно число - количество квадратов.
Пример
Ввод
64
Вывод
3
18.6. Змейка (3). Змей Горыныч убедительно просит расположить N2 чисел от 1 до N2 в
квадрате змейкой.
Ввод. В единственной строке файла INPUT.TXT задано число N (1 ≤ N ≤ 50).
Вывод. Файл OUTPUT.TXT содержит N2 чисел по N чисел в строке в форме змейки.
Пример
Ввод
4
Вывод
1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16
18.7. Спираль (3). Расположить N2 чисел от 1 до N2 в квадрате по спирали.
Ввод. В единственной строке файла INPUT.TXT задано число N (1 ≤ N ≤ 50).
Вывод. Выходной файл OUTPUT.TXT содержит N2 чисел по N чисел по спирали.
Пример
Ввод
4
Вывод
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
18.8. Вирусы (4). На поле размером N*N (2 ≤ N ≤ 50) расположено M (1 ≤ M ≤ 10) вирусов. За
каждый ход вирус заражает 4 соседние с ним клетки. Положение вирусов задано координатами на
поле: номерами строки и столбца. Определить, за какое наименьшее количество ходов все клетки
поля будут заражены хотя бы одним вирусом.
Ввод. В первой строке файла INPUT.TXT содержатся через пробел числа N и M. В следующих
M строках заданы через пробел пары целых чисел, определяющих координаты вирусов.
Вывод. В файл OUTPUT.TXT вывести единственное требуемое число.
Пример
Ввод
3 1
1 1
Вывод
4
18.9. Сапер (3). В некоторых клетках прямоугольной таблицы M×N (0 < M, N ≤ 10) имеются
“мины” (игра Minesweeper). Проставить во всех клетках таблицы либо символ мины ‘*’, либо
число от 0 до 8, показывающее число мин в соседних клетках по горизонтали, вертикали или
диагонали.
Ввод. Первая строка файла INPUT.TXT содержит целые числа M и N через пробел, задающие
число строк и столбцов соответственно. Каждая из последующих M строк содержит ровно N
символов. Безопасные клетки обозначаются ‘+’, а мины ‘*’.
Вывод. В файл OUTPUT.TXT вывести M строк по N символов.
Пример
Ввод
3 5
++*+*
**+++
+*+++
Вывод
23*2*
**343
222**
18.10. Троллейбусы (4). Троллейбусы одного маршрута проходят через остановку каждые K
минут. Известны времена прихода N жителей на остановку. Если человек приходит на остановку в
момент прихода троллейбуса, то он успевает войти в этот троллейбус. Определить в пределах часа
время прибытия первого троллейбуса на остановку T такого, чтобы суммарное время ожидания
троллейбуса для всех граждан было минимальным. Если этот минимум достигается в разные
моменты прибытия, вывести наиболее раннее время.
Ввод. Первая строка файла INPUT.TXT содержит целые числа K (2  K < 60) и N (1  N  104)
через пробел. Во второй строке заданы моменты прихода жителей - N целых числа от 0 до 104.
Вывод. Результат в файле OUTPUT.TXT в виде целого числа T (0  T  60).
Пример
Ввод
5 3
1 1 2
Вывод
2
18.11. Магазин (3). В магазине штучных изделий продают флешки, бляшки, чашки и другие
товары. В налоговой инспекции оказались два списка. В первом указано количество проданных
товаров каждого вида, а во втором - цены каждого вида товаров. Порядок товаров в списках
разный. Добрый и злой инспекторы для начисления налогов желают определить наименьшую и
наибольшую возможную выручку от всех проданных товаров.
Ввод. Первая строка файла INPUT.TXT содержит число видов товаров N (1  N  50). Во
второй строке задаются через пробел целые положительные числа X1, X2,…, XN, определяющие
количество каждого вида товара (1  Xi  200). В третьей строке задаются через пробел целые
положительные числа Y1, Y2,…, YN , определяющие цены каждого вида товара (1  Yi  200).
Данные по одному и тому же товару в общем случае содержатся в элементах списков X и Y с
разными номерами.
Вывод. Результат в файле OUTPUT.TXT в виде двух целых чисел через пробел.
Пример
Ввод
2
5 1
4 7
Вывод
27 39
18.12. Крестики-нолики (4). Два студента, вернувшись из академического отпуска, снова
играют на лекции в крестики-нолики на поле размера M×N. Чтобы было интереснее, они ходят по
два раза: сначала первый студент рисует два крестика, потом второй два нолика и т. д.
Выигрывает тот, кто построит вертикальный, горизонтальный или диагональный ряд из трех
своих значков. К концу лекции студенты не успели разобраться, кто выигрывает при правильной
игре обоих игроков, и решили это выяснить на следующих занятиях. Как и раньше, это может
грозить серьезными последствиями. Помогите хорошим ребятам разобраться в проблеме и
избежать неприятностей.
Ввод. В первой строке файла INPUT.TXT содержится число L (1 ≤L ≤10) – количество
сыгранных партий. В L следующих строках заданы через пробел пары целых числа M и N (1 ≤ M,
N ≤ 50) – размеры поля в каждой партии.
Вывод. В файл OUTPUT.TXT вывести L строк. В каждой i-ой строке выводится X, если в i-ой
партии при правильной игре обоих игроков выигрывают крестики, O – нолики и D в случае ничьей
(все поле заполнено, но никто не выиграл). Все буквы – латинские заглавные.
Пример
Ввод
2
3 3
2 3
Вывод
X
D
Пояснение. На поле 3×3 выигрывают крестики, на поле 2×3 – ничья.
18.13. Арифметическая прогрессия (3). Заданo N натуральных чисел из диапазона от 1 до 104.
Необходимо определить, можно ли из этих чисел в каком-либо порядке их следования составить
арифметическую прогрессию.
Ввод. Первая строка файла INPUT.TXT содержит число тестовых блоков L (L ≤ 10). Каждый
тестовый блок состоит из двух строк. В первой указывается количество чисел N (1 ≤ N ≤ 1000), во
второй - N чисел через пробел.
Ввод. Результат в файле OUTPUT.TXT. Для каждого тестового блока выводится единственная
строка со значением Yes или No – можно или нет составить арифметическую прогрессию.
Пример
Ввод
2
3
5 9 1
4
11 13 15 13
Вывод
Yes
No
18.14. Последовательность 3 (3). Найти в заданной последовательности пару чисел, для
которых абсолютная величина разности минимальна.
Ввод. Первая строка файла INPUT.TXT содержит число N – количество чисел во входной
последовательности (3 ≤ N ≤ 2×105). Следующая строка содержит входную последовательность,
состоящую из N целых чисел, не превышающих по модулю 109. Все числа в строке разделены
пробелом.
Вывод. В первую строку файла OUTPUT.TXT вывести минимум абсолютной величины двух
различных чисел последовательности. Во второй строке – два порядковых номера чисел
последовательности по возрастанию, на которых достигнут минимум. Числа нумеруются от 1 до
N. Если решений больше одного, вывести то, для которого меньший номер минимален.
Пример
Ввод
7
1 12 31 9 3 17 25
Вывод
3
2 4
18.15. Черепашка (4). Черепашка ползет по прямоугольному клетчатому полю размером M×N
из левого верхнего угла в правый нижний. В каждой клетке поля находится целое число. Путь
черепашки представляет собой последовательность ходов вниз либо вправо. Длиной пути
считается сумма чисел в его клетках. Требуется найти кратчайший путь.
Ввод. Первая строка файла INPUT.TXT содержит два натуральных числа M и N через пробел –
размеры поля (1 ≤ M, N ≤ 100). В следующих M строках находятся по N целых чисел через пробел.
Вывод. В первой строке файла OUTPUT.TXT вывести через пробел длину кратчайшего пути. В
каждой их следующих M + N – 1 строках вывести по два числа через пробел: номера строки и
столбца очередной клетки маршрута черепашки.
Пример
Ввод
3 2
11 -6
2 10
-6 8
Вывод
15
1 1
2 1
3 1
3 2
18.16. Игра в слова (3). Задано некоторое слово. Требуется составить из букв этого слова
максимальное количество других слов, которые имеются в словаре. Каждая буква заданного слова
может использоваться только один раз. Например, если в заданном слове имеется две буквы 'а', то
слова словаря, в которых больше двух букв 'а', не подходят. Каждое найденное слово из словаря
оценивается количеством очков, равным длине слова. Результат игры определяется суммой очков.
Ввод из файла INPUT.TXT. Первая строка содержит заданное слово. Далее находятся слова
словаря. Все слова состоят из строчных (маленьких) русских букв. Количество слов словаря не
превышает 100. В каждом слове не более 20 букв. Длина заданного слова также не больше 20
символов.
Вывод в файл OUTPUT.TXT. В первой строке выводится количество набранных очков.
Начиная со второй строки, следуют найденные слова. Они должны выводиться по одному в
строке по убыванию количества букв. Слова с одинаковым количеством букв должны следовать
по алфавиту.
Пример
Ввод
барабан
баран
нары
бар
барбара
баобаб
ар
Вывод
10
баран
бар
ар
18.17. Наибольшее число (3). В положительном целом N-значном числе вычеркнуть одну
цифру так, чтобы оставшееся число было как можно большим.
Ввод из файла INPUT.TXT. В первой строке находится количество знаков числа N (2  N  105).
Во второй строке задано само N-значное число.
Вывод в файл OUTPUT.TXT. Вывести единственное число: номер позиции, соответствующий
вычеркнутой цифре. Если решений несколько, вывести наименьший номер.
Пример
Ввод 1
Ввод 2
3
3
113
321
Вывод 1
Вывод 2
1
3
18.18. Игра в числа (3). Вася очень любит играть в числа. Для этой игры нужна колода из N
различных целых чисел от 1 до N. Эдик только что достал новую колоду. Вася говорит, что в
колоде недостает ровно двух чисел. Зная N (количество чисел, которое должно быть в колоде) и S
(сумму имеющихся чисел), определите, не ошибся ли Вася, и если не ошибся, предложите, каких
именно чисел недостает.
Ввод. В первой строке файла INPUT.TXT находятся два целых числа: N (3  N  104) и S.
Вывод. Если могли пропасть ровно два числа, в первой строке файла OUTPUT.TXT напишите
YES, во второй - приведите возможный вариант – два числа через пробел. Если решений
несколько, выведите в порядке возрастания такие два числа, для которых абсолютная величина
разности минимальна. Если Вася ошибся, в единственной строке напишите NO.
Примеры
Ввод 1
Ввод 2
6 13
6 12
Вывод 1
Вывод 2
YES
YES
3 5
4 5
18.19. Последовательность 4 (3). Найти в заданной последовательности значение, которое
встречается наибольшее количество раз. Если таких значений несколько, то выбрать минимальное
из них. Переместить все числа с этим значением в конец последовательности.
Ввод. Первая строка файла INPUT.TXT содержит число N – количество чисел во входной
последовательности (3 ≤ N ≤ 2×105). Следующая строка содержит входную последовательность,
состоящую из N целых чисел, не превышающих по модулю 109. Все числа в строке разделены
пробелом.
Вывод. В единственную строку файла OUTPUT.TXT вывести конечную последовательность.
Пример
Ввод
7
10 3 6 2 3 5 6
Вывод
10 6 2 5 6 3 3
Download