Тренировка S04

Время тестирования приведено для Intel Celeron 400.
Решения должны быть представлены на Turbo Pascal 7.0. Объём памяти, предоставляемый программе, составляет 500 кб.


        Задача A. Совершенные числа

Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Требуется найти все совершенные числа от M до N.
Ограничения: M и N целые, 1 <= M <= N <= 109, (N - M) * sqrt(N) <= 107, время 5 с.
Ввод из файла perfect.in. В первой строке находятся разделённые пробелом числа M и N.
Вывод в файл perfect.out. В каждой строке вывести по одному числу в порядке возрастания. Если совершенных чисел в промежутке нет, вывести "Absent".
Примеры
Ввод 1    Ввод 2
6 6       4 5
Вывод 1   Вывод 2
6         Absent

        Задача B. Разложение на слагаемые

Вывести все представления натурального числа N суммой натуральных чисел. Перестановка слагаемых нового способа представления не даёт.
Ограничения: 2 <= N <= 40, время 2 с.
Ввод из файла decomp.in. В первой строке находится единственное число N.
Вывод в файл decomp.out. В каждой строке выводится одно из представлений. В сумме слагаемые разделяются знаком "+".
Примеры
Ввод 1
4
Вывод 1
1+1+1+1
1+2+1
1+3
2+2

        Задача C. Гангстеры

N гангстеров собираются в ресторан. i-й гангстер приходит в момент времени Ti и имеет богатство Pi. Дверь ресторана имеет K + 1 степень открытости, они обозначаются целыми числами из интервала [0, K]. Степень открытости двери может изменяться на единицу в единицу времени, то есть дверь может открыться на единицу, закрыться на единицу или остаться в том же состоянии. В начальный момент времени дверь закрыта (степень открытости 0). i-й гангстер заходит в ресторан, только если дверь открыта специально для него, то есть когда степень открытости двери соответствует его полноте Si. Если в момент, когда гангстер подходит к ресторану, степень открытости двери не соответствует его полноте, он уходит и больше не возвращается. Ресторан работает в интервале времени [0, T]. Требуется собрать гангстеров с максимальным суммарным богатством в ресторане, открывая и закрывая дверь соответствующим образом.
Ограничения: 1 <= N <= 100, 1 <= K <= 100, 1 <= T <= 30 000, 0 <= Ti <= T, 1 <= Pi <= 300, 1 <= Si <= K, все числа целые, время 2 с.
Ввод из файла gangster.in. В первой строке находятся числа N, K, T, во второй - T1, T2, ..., TN, в третьей - P1, P2, ..., PN. в четвёртой - S1, S2, ..., SN. Числа в строках разделены пробелами.
Вывод в файл gangster.out. Вывести одно число - максимальное суммарное богатство гангстеров, попавших в ресторан. Если зайти не удалось никому, вывести 0.
Примеры
Ввод 1        Ввод 2
4 10 20       2 17 100
10 16 8 16    5 0
10 11 15 1    50 33
10 7 1 8      6 1
Вывод 1       Вывод 2
26            0

        Задача D. Площадь многоугольника

Многоугольник на плоскости задан целочисленными координатами своих N вершин в декартовой системе координат. Требуется найти площадь многоугольника. Стороны многоугольника не соприкасаются (за исключением соседних - в вершинах) и не пересекаются.
Ограничения: 3 <= N <= 50 000, координаты вершин целые и по модулю не превосходят 20 000, время 1 с.
Ввод из файла area.in. В первой строке находится число N. В следующих N строках находятся пары чисел - координаты точек. Если соединить точки в данном порядке, а также первую и последнюю точки, получится заданный многоугольник.
Вывод в файл area.out. Вывести одно число - площадь многоугольника. Его следует округлить до ближайшего числа с одной цифрой после запятой.
Примеры
Ввод 1       Ввод 2
4            4
5 0          0 4
0 5          0 0
-5 0         3 0
0 -5         1 1
Вывод 1      Вывод 2
50.0         3.5

        Задача E. Деление длинного числа на короткое

Даны целое неотрицательное число M и целое положительное число N. Найти M div N и M mod N.
Ограничения: 0 <= M <= 1060 000, 1 <= N <= 1 000 000, время 1 с.
Ввод из файла divshort.in. В первой строке находится число M, во второй - N.
Вывод в файл divshort.out. В первой строке вывести значение выражения M div N во второй - выражения M mod N.
Примеры
Ввод 1
12345678901234567890
1000
Вывод 1
12345678901234567
890

        Задача F. Скобки

Дана последовательность из N круглых, квадратных и фигурных скобок. Выяснить, можно ли добавить в неё цифры и знаки арифметических действий так, чтобы получилось правильное арифметическое выражение.
Ограничения: 1 <= N <= 100 000, время 1 с.
Ввод из файла bracket.in. В первой строке находится число скобок N, во второй - N символов из набора (, ), [, ], {, }.
Вывод в файл bracket.out. Выводится слово "Yes", если получить правильное арифметическое выражение можно, или "No", если нельзя.
Примеры
Ввод 1    Ввод 2
6         24
([())]    {[()([]{})[]]({}{{}})}[]
Вывод 1   Вывод 2
No        Yes
Hosted by uCoz