---> 240 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: << 42 43 44 45 46 47 48 >> Отображать по:
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Рассмотрим компьютерную сеть с настроенной TCP/IP маршрутизацией. Будем рассматривать некоторую ее модификацию. А именно в этой сети находить N подсетей. Каждая подсеть характеризуется своей маской. Маска подсети представляет собой 4 однобайтных числа, разделенных точкой. Причем для масок выполнено следующее свойство: если представить маску в двоичном виде, то сначала она будет содержать k единиц, а потом q нулей, причем k + q = 32 . Например 255.255.255.0 — маска подсети, а 192.168.0.1 — нет.

Поясним, как получается двоичное представление IP-адреса. Для этого числа, составляющие IP-адрес, представляются в двоичной системе счисления (при этом каждое из них дополняется ведущими нулями до длины 8 цифр), после чего удаляются точки. Получившееся 32-битное число и есть двоичное представление IP-адреса. Например, для адреса 192.168.0.1 этот процесс выглядит так: 192.168.0.1 -> 11000000.10101000.00000000.00000001 -> 11000000101010000000000000000001. Таким образом, двоичным представлением IP-адреса 192.168.0.1 является 11000000101010000000000000000001.

Будем говорить, что два компьютера с IP 1 и IP 2 лежат в подсети, если IP 1 & Mask = IP 2 & Mask , где Mask — маска этой подсети, а & — операция побитового логического "и". IP компьютера представляет так же 4 однобайтных числа, разделенных точкой.

Вам даны M пар IP-адресов компьютеров. Для каждой из них Вам надо определить, в скольких подсетях из заданных они лежат.

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

В первой строке входного файла записано число N — количество подсетей. В следующий N строках перечислены маски этих подсетей. В N + 2 строке находится число M (0 ≤ M ≤ 100000) . В следующих M строках записаны пары IP-адресов, разделенных пробелом.

Все заданные маски подсетей различны.

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

Для каждой пары IP-адресов в отдельной строке выходного файла выведите количество подсетей, в которых лежат оба компьютера.

Примеры
Входные данные
2
255.255.255.255
255.255.255.0
3
192.168.31.1 192.168.31.2
192.168.31.3 192.168.31.4
192.168.31.1 192.167.31.2
Выходные данные
1
1
0
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

Главный режиссер шоу, посвященного открытию ACM Programming Contest, хочет, чтобы участники шоу могли выстраиваться в различное число колонн ровно N способами. Причем при любом перестроении количество людей в каждой из колонн должно быть одинаковым. Требуется сообщить режиссеру, какое минимальное число М человек ему для этого понадобится. Так, при N = 3 потребуется пригласить всего М = 4 человек, которые могут выстроиться в 1, 2 и 4 колонны. Если же при некотором N для шоу потребуется более 10 9 человек, то режиссеру можно сообщить, что подходящее число людей собрать невозможно.

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

Программа запрашивает натуральное число N ≤ 1000

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

Если для введенного N минимальное число людей М для шоу не превосходит 10 9 , то выдать это число М , в противном случае число 0.

Примеры
Входные данные
5
Выходные данные
16
Входные данные
6
Выходные данные
12
Входные данные
24
Выходные данные
360
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Во владениях короля Флатландии находится прямая дорога длиной \(n\) километров, по одну сторону от которой расположен огромный лесной массив. Король Флатландии проникся идеями защиты природы и решил превратить свой лесной массив в заповедник. Но сыновья стали сопротивляться: ведь им хотелось получить эти земли в наследство.

У короля три сына: младший, средний и старший. Король решил, что в заповедник не войдут участки лесного массива, которые он оставит сыновьям в наследство. При составлении завещания король хочет, чтобы для участков выполнялись следующие условия:

  • каждый участок должен иметь форму квадрата, длина стороны которого выражается целым положительным числом. Одна из сторон каждого квадрата должна лежать на дороге. Пусть участки имеют размеры \(a \times a, b \times b\) и \(c \times c\);
  • стороны квадратов должны полностью покрывать дорогу: величина a + b + c должна быть равна \(n\);
  • участок младшего сына должен быть строго меньше участка среднего сына, а участок среднего сына должен, в свою очередь, быть строго меньше участка старшего сына, то есть должно выполняться неравенство \(a < b < c\);
  • суммарная площадь участков \(a^2 + b^2+ c^2\) должна быть минимальна.
Требуется написать программу, которая по заданной длине дороги определяет размеры участков, которые следует выделить сыновьям короля.

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

Входной файл содержит одно целое число \(n\) (\(6 \le n \le 10^9\) ).

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

Выходной файл должен содержать три целых положительных числа, разделенных пробелами: \(a\), \(b\) и \(c\) – длины сторон участков, которые следует выделить младшему, среднему и старшему сыну, соответственно. Если оптимальных решений несколько, разрешается вывести любое.

Пояснение к примеру

Описание подзадач и системы оценивания

В этой задаче четыре подзадачи. Баллы за подзадачу начисляются только в случае, если все тесты для данной подзадачи пройдены.

Подзадача 1 (25 баллов)

\(n \le 50\)

Подзадача 2 (25 баллов)

\(n \le 2000\)

Подзадача 3 (25 баллов)

\(n \le 40000\)

Подзадача 4 (25 баллов)

\(n \le 10^9\)

Примеры
Входные данные
6
Выходные данные
1 2 3
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Числа в позиционной троично-симметричной системе счисления записываются с использованием трех символов: +, –, 0. Например, такими числами являются, например,

"+ + 0 – 0", "– – 0 +", "– – –".

Эти числа переводятся в десятичную систему как:

   а) + + 0 – 0 = 1*\(3^4\) + 1*\(3^3\) + 0*\(3^2\) – 1*\(3^1\) + 0*\(3^0\)

   б) – – 0 + = – 1*\(3^3\) – 1*\(3^2\) + 0*\(3^1\) + 1*\(3^0\)

   в) – – – = – 1*\(3^2\) – 1*\(3^1\) – 1*\(3^0\)

Над числами в позиционной троично-симметричной системе счисления можно выполнять два действия: сложение (+) и вычитание (–). Требуется написать программу, которая вычисляет сумму или разность чисел в троично-симметричной системе счисления. Таблица Пифагора для сложения цифр в троично-симметричной системе счисления имеет вид:

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

В единственной строке записаны два числа в троично-симметричной системе счисления, между которыми в скобках записана требуемая операция. Разрядность чисел не превышает 15.

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

В единственной строке необходимо вывести полученный в результате заданной операции результат в троично-симметричной системе счисления.

Примеры
Входные данные
+++0-(+)-0+
Выходные данные
++000
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Вася очень любит учиться, но некоторые уроки в школе—полная скукотища. Для того чтобы скрасить время, они с Петей придумали игру. Перед началом партии ребята пишут на листочке два различных натуральных числа aиb . Затем по очереди делают ход: среди записанных чисел выбирают p и q такие, что модуля их разности | p q | еще нет на листке, и дописывают его. Проигрывает тот, кто не может сделать ход. Определите, кто из ребят окажется победителем при правильной игре обоих. Вася вежливый мальчик, поэтому всегда ходит вторым.

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

В первой и единственной строке записано два различных натуральных числа 1 ≤ a , b ≤ 10^9 , разделенные пробелом—два исходных числа на листке.

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

Выведите имя победителя

Примечание

В первом примере Петя первым ходом допишет на листок число |6−2| = 4 . Больше ходов нет, поэтому выигрывает Петя. Во втором примере первым ходом на листок будет дописано число |4−1| = 3 . Затем Вася может записать |3−1| = 2 , тогда у Пети ходов не останется. Побеждает Вася.

Примеры
Входные данные
6 2
Выходные данные
Petya
Входные данные
4 1
Выходные данные
Vasya

Страница: << 42 43 44 45 46 47 48 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест