Язык программирования

565 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Напишите функцию
bool Xor (bool x, bool y) (C/C++),
function _Xor (x, y:boolean): boolean (Pascal),
def xor(x, y):(Python)

реализующую функцию "Исключающее ИЛИ" двух логических переменных x и y. Функция Xor должна возвращать true, если ровно один из ее аргументов x или y, но не оба одновременно равны true.

Входные данные
Вводится 2 числа - x и y (x и y равны 0 или 1, 0 соответствует значению false, 1 соответствует значению true).

Выходные данные
Необходимо вывести 0 или 1 - значение функции от x и y.

Товар стоит a руб. b коп. За него заплатили c руб. d коп. Сколько сдачи требуется получить?


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

Вводятся 4 числа: ab, c и d.


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

Необходимо вывести 2 числа: e и f, число рублей и копеек, соответственно.

Решить в целых числах уравнение ( ax + b ) : ( cx + d ) = 0.

Входные данные
Вводятся 4 числа: a, b, c и d; c и d не равны нулю одновременно.

Выходные данные
Необходимо вывести все целочисленные решения, если их число конечно, “NO” (без кавычек), если целочисленных решений нет, и “INF” (без кавычек), если их бесконечно много.
Требуется поменять местами первый элемент массива с максимальным.

Входные данные
В первой строке вводится одно натуральное число, не превосходящее 1000 – размер массива. Во второй строке задаются N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

Выходные данные
Вывести получившийся массив. Если максимальных элементов несколько, требуется поменять первый из них.
Напишите программу, которая находит номер максимального элемента массива.

Входные данные
В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива.

Во второй строке вводится N чисел – элементы массива (целые числа, не превосходящие по модулю 1000).

Выходные данные
Вывести одно число – номер максимального элемента в массиве. Если в массиве несколько максимальных элементов, выведите номер любого из них.

Однажды, девочка Аня записала несколько целых чисел лежащих в диапазоне от \(-1000\) до \(1000\) в некоторую изначально пустую строку \(S\), разделив каждые два пробелом. Но стоило ей отвернуться, как злой хулиган Гриша заменил все пробелы в строке на подстроки из строчных латинских букв. Тем не менее и этого ему показалось мало, поэтому он мог дописать латинских строчных букв еще и в начало и конец строки \(S\).

Аня очень расстроилась, увидев это безобразие, но времени на расшифровку у нее нет. Однако, ей срочно понадобилось узнать, какое число было наибольшим. Ваша задача — помочь ей.

Формат входных данных
В первой строке содержится одно натуральное число \(n\) — количество символов в строке \(S\) (\(1 \le n \le 100\)).

Во второй строке содержится строка \(S\), состоящая из латинских строчных букв, цифр и знаков <<->>.

Гарантируется:

  • В данной строке содержится хотя бы одна цифра

  • В следующей позиции после каждого знака <<->> находится цифра

  • В числах, изначально записанных в строку не было ведущих нулей, а также каждое из них не превосходило \(1000\) по модулю.

Формат выходных данных
В единственной строке выведите наибольшее число, которое было у Ани в строке.

Обратите внимание, что \(0\) следует выводить без знака <<->>.

 

Саша очень любит нули. Но нули на конце числа не кажутся ему интересными. Разумеется, ведущие нули тоже не интересуют Сашу.

Саша считает красоту числа равной количество нулей в его десятичной записи, за исключеним нулей в конце числа. Разумеется, ведущих нулей в записи быть не должно. Например, красота числа 100500 равна 2.

По заданному числу \(k\) выясните, чему равна его красота по мнению Саши.

Формат входных данных
Входные данные содержат одно число \(k\) (\(1 \le k \le 10^9\)).

Формат выходных данных

Выведите одно число — красоту числа \(k\) по мнению Саши.

Миша увлекается компьютерной графикой. Он хочет нарисовать на экране квадрат размером \(n\times n\) пикселей разными цветами.

Монитор Миши поддерживает 26 цветов. Для обозначения цветов будем использовать строчные буквы латинского алфавита от <<a>> до <<z>>. Миша хочет нарисовать каждый пиксель некоторым цветом, который зависит от расстояния от пикселя до ближайшей диагонали.

А именно, клетки на диагоналях квадрата он хочет нарисовать цветом <<a>>, соседние с ними клетки — цветом <<b>>, соседние с ними, но еще не покрашенные — цветом <<c>>, и так далее. После цвета <<z>> Миша снова переходит к цвету <<a>>.

По заданному \(n\) выведите картинку, которая получится у Миши.

Формат входных данных
Входные данные содержат одно целое число \(n\) (\(1 \le n \le 100\)).

Формат выходных данных
Выведите \(n\) строк по \(n\) символов — картинку, которая получится у Миши.

Пронумеруем клетки прямоугольной таблицы с \(r\) строками и \(c\) столбцами, начиная с левого верхнего угла. Нумерацию будем вести по диагоналям, идущим справа-сверху налево-вниз, клетки одной диагонали будем нумеровать сверху вниз.

Например, для таблицы \(3 \times 5\) клетки будут пронумерованы следующим образом:

1 2 4 7 10
3 5 8 11 13
6 9 12 14 15

Задано \(q\) номеров клеток. Для каждого номера найдите, в какой клетке он находится.

Формат входных данных
Первая строка ввода содержит три целых числа: \(r\), \(c\) и \(q\) (\(1 \le r, c \le 10^9\), \(1 \le q \le 100\)).

Вторая строка содержит \(q\) целых чисел \(1 \le n_1 < n_2 < \ldots < n_q \le r\cdot c\).

Формат выходных данных
Выведите \(q\) строк. Для каждого числа \(n_i\) выведите два числа: номер строки и номер столбца, где находится соответствующая клетка. Строки нумеруются с 1 сверху вниз. Столбцы нумеруются с 1 слева направо.

Одной из визуализаций правильных скобочных последовательностей являются пути Дика. Путь Дика — путь на клетчатой плоскости, составленный из диагональных отрезков, соединяющих противоположные углы единичных квадратов. Путь начинается из начала координат, открывающейся скобке соответствует отрезок, поднимающийся вправо вверх, а закрывающиейся — спускающийся вправо вниз. На рисунке показан путь Дика для скобочной последовательности <<(())()>>.

Требуется написать программу, которая изображает путь Дика для заданной правильной скобочной последовательности с использованием символов <<.>> (ASCII 46) для пустых единичных квадратов, <</>> (ASCII 47) для единичных квадратов, содержащих отрезок, поднимающийся вверх, и <<
>> (ASCII 97) для единичных квадратов, содержащих отрезок, спускающийся вниз.

Напомним, что правильная скобочная последовательность — последовательность открывающихся и закрывающихся круглых скобок, получающаяся из некоторого корректного арифметического выражения удалением из него всего, кроме скобок. Иначе говоря, это последовательность, содержающая равное число открывающихся и закрывающихся скобок, при этом любой префикс этой последовательности содержит не меньше открывающихся скобок, чем закрывающихся.

Формат входных данных
На ввод подается правильная скобочная последовательность. Она непуста и имеет длину не более \(100\) символов.

Формат выходных данных
Требуется вывести изображение пути Дика для заданной во вводе правильной скобочной последовательности. Количество выведенных строк должно быть минимальным возможным. Все строки должны иметь одинаковую длину. Эта длина должна быть минимальной возможной для данного ввода.

 

Старшеклассники Андрей и Аня планируют прийти на празднование 1 сентября у первоклассников. Они решили принести конфеты, чтобы раздать ребятам. Им известно, что на празднике будет \(n\) первоклассников. Каждый из старшеклассников готов купить от \(a\) до \(b\) конфет, включительно. Они хотели бы купить в сумме такое число конфет, чтобы их можно было поделить между всеми первоклассниками поровну. Если же такое число конфет купить не получается, то они хотят, чтобы после деления поровну между первоклассниками осталось как можно меньше конфет.

Если есть несколько способов выбрать, сколько конфет купят Андрей и Аня, они решили выбрать такой способ, в котором Андрей купит как можно больше конфет. А если по прежнему есть несколько способов, то чтобы Аня купила как можно больше конфет. Помогите Андрею и Ане понять, сколько конфет нужно купить каждому из них.

Формат входных данных
На ввод подаются три натуральных числа, по одному на строке: \(n\) — число первоклассников, \(a\) и \(b\) — минимальное и максимальное число конфет, которое согласен купить каждый из старшеклассников (\(1 \le n \le 10^9\), \(1 \le a \le b \le 10^9\)).

Формат выходных данных
Выведите два целых числа \(x\) и \(y\) — число конфет, которые купят Андрей и Аня, соответственно.

SpamGPT-4#49856

Для тестирования отказоустойчивости двух лучших спам-ботов компании <<LinkedOut>> было решено настроить их на взаимодействие друг с другом и посмотреть, как долго они проработают в таком режиме без ошибок.

После старта оба бота отправляют друг другу по одному сообщению, после чего первый бот отправляет новое сообщение каждые \(a\) секунд, а второй — каждые \(b\) секунд. Иными словами, первый бот отправляет новое сообщение на секундах \(0\), \(a\), \(2a\), и так далее, а второй — на секундах \(0\), \(b\), \(2b\), и так далее.

Помимо этого, оба бота отправляют ответ на каждое полученное сообщение ровно спустя секунду после получения. Сообщения отправляются без задержки и приходят моментально после отправки. В частности, если в момент времени \(t\) первый бот отправит сообщение, то в момент времени \(t + 1\) он получит ответ на него, а в момент времени \(t + 2\) — отправит свой ответ. Также боты отлично выполняют параллельные задачи параллельно и могут отправлять любое количество сообщений одновременно (например, если надо одновременно отправить новое сообщение и ответы на полученные).

Вам даны параметры ботов \(a\) и \(b\). Определите, сколько сообщений каждый из ботов должен будет отправить к моменту времени \(T\), если они оба будут работать без ошибок.

Формат входных данных
В единственной строке ввода через пробел даны три целых числа \(a\), \(b\) и \(T\) — периодичности отправки новых сообщений и время работы ботов (\(1 \le a, b, T \le 10^9\)).

Формат выходных данных
Выведите через пробел два целых числа — количество сообщений, отправленных к моменту \(T\) первым и вторым ботом, соответственно. Если какие-то сообщения должны быть отправлены в \(T\)-ю секунду, их тоже следует учесть в ответе.


Замечание
Пояснение ко второму примеру:

  1. в момент времени \(0\) первый бот отправляет второму сообщение A, а второй первому — B;

  2. в момент времени \(1\) боты отправляют друг другу ответы на полученные на нулевой секунде сообщения: первый второму B(1) (ответ на B), а второй первому — A(1);

  3. в момент времени \(2\) новых сообщений не появляется, и они отправляют друг другу ответы на полученные на первой секунде сообщения: A(2) (ответ на A(1)) и B(2);

  4. в момент времени \(3\) будут отправлены B(3) и A(3), и одновременно с этим второй бот отправит первому новое сообщение C;

  5. в момент времени \(4\) первый отправит второму новое сообщение D, C(1) (ответ на C) и A(4), а второй первому — B(4);

  6. в момент времени \(5\) новых сообщений нет, боты отправляют друг другу ответы на полученные секунду назад сообщения;

  7. в момент времени \(6\) будут отправлены ответы на сообщения с предыдущей секунды, а также второй бот отправит первому новое сообщение E.

Итого, первый бот отправил: A, B(1), A(2), B(3), D, C(1), A(4), B(5), D(2), C(3) и A(6), всего 11 сообщений.

Второй бот тоже отправил ровно 11 сообщений: B, A(1), B(2), C, A(3), B(4), D(1), C(2), A(4), E и B(6).

Саша Белый недавно устроился подрабатывать на горнолыжный курорт недалеко от Аши. Первым делом ему поручили установить ограждения для лыжной трассы.
Саше дали n ограждений, каждое длиной ai. Любые два последовательных ограждения скреплены друг с другом, но при этом могут произвольно поворачиваться друг относительно друга.
Саша хочет сделать трассу интересной: по его мнению, трасса должна быть в форме спирали (ограждение под номером i +1 должно быть повернуто на 90 градусов по часовой стрелке относительно ограждения под номером i; при этом никакие ограждения, кроме смежных, не должны касаться друг друга и пересекаться).
К сожалению, не из любых наборов ограждений можно сложить спираль. Помогите Саше для заданного набора определить, возможно ли из него составить спираль.
Входные данные
В первой строке входных данных записано целое число n — количество ограждений (1 <= n <= 105). Во второй строке через пробел заданы n целых чисел ai — длина i-го ограждения (1 <= ai <=109).
Выходные данные
Выведите YES, если возможно из данных ограждений сложить спираль, или NO в противном случае.
 
Примеры
Входные данные Выходные данные
1 5
1 2 3 3 5
YES
2 6
5 7 6 8 6 10
NO
3 9
1 1 2 2 6 2 2 1 1
YES

Замечание
Обратите внимание на третий пример, спираль может иметь два центра, главное, чтобы ограждения не пересекались. Иллюстрация к третьему примеру:


Гена Букин приехал в Златоуст провести управленческую лекцию в обувном магазине. Зайдя в магазин, Гена увидел полнейший бардак: коробки обуви хаотично валялись в куче посреди зала.
Конечно же, его эта ситуация не устроила, и он решил, что нужно показать, как правильно расставлять коробки. Он заметил, что в магазине есть коробки только двух типов: красные имеют высоту x сантиметров, их a штук; синие имеют высоту y сантиметров, их b штук.
Гена хочет взять несколько коробок из кучи и составить из них башню. Однако из каких-то личных представлений об эстетике Гена не ставит две коробки одинакового цвета друг на друга, в башне он может только чередовать цвета.
Попробовав все возможные способы построения башни, Гена запомнил, сколько различных высот конструкции он смог получить. А сможете ли вы определить, сколько существует различных высот h > 0, что можно построить башню из коробок высотой h, удовлетворяя требованиям о чередовании цветов?
Входные данные
В единственной строке через пробел вводятся 4 целых числа x, y, a, b — высота красной коробки, высота синей коробки, количество красных коробок, количество синих коробок (1<= x,y,a,b <=109).
Выходные данные
Выведите одно число — количество различных высот башен из коробок.
 
Примеры
Входные данные Выходные данные
1 1 2 3 3 9
Саша Белый давно планировал переехать в Кыштым. И вот настал день X. Саша собрал все свои вещи в ящики и вынес их на улицу. Ящики были распределены на n стопок, расположенных вдоль одной прямой, следующим образом: a1 ящиков в первой стопке стоят непосредственно у газели, a2 ящиков во второй стопке – правее первой на метр, следующие a3 еще через метр и т.д. Теперь Белому нужно переставить все ящики как можно ближе к газели, а именно, все ящики из второй, третьей и т.д. стопок должны быть переставлены в первую стопку к исходным a1 ящикам.
Саша за этот день уже очень устал. Но, к счастью, мимо проходили n мальчишек. Ребята согласились перенести ящики. Каждый из них, ввиду своей выносливости, переносит грузы следующим образом:
1. i-й мальчик проходится по стопкам, номера которых делятся на i, справа налево.
2. Он берет из первой стопки на своем пути ровно один ящик (эта стопка обязана быть непустой).
3. Пройдя i метров налево (то есть до следующей стопки, номер которой делится на i), он снова берет один ящик со стопки, рядом с которой он стоит (исходя из этого, в стопке  обязательно должен быть хотя бы один ящик), пройдя еще i метров налево он снова берет ящик и так далее.
4. Когда i-й мальчик доходит до стопки с номером i, он кладет все ранее взятые ящики в эту стопку.

Каждый из ребят может делать сколько угодно проходов. Мальчики могут делать проходы в любом порядке (например, возможна ситуация, когда сначала проходится второй
мальчик, потом первый и снова второй).
Теперь Саша Белый хочет знать, получится ли у них переставить все ящики в начало. Скажите ему ответ на вопрос.

Входные данные
В первой строке входных данных записано целое число n количество стопок ящиков (1 <= n <= 105).
Во второй строке через пробел записаны n целых чисел di количество ящиков в i-й стопке (1 <= di <= 109).
Выходные данные
Выведите YES, если существует способ, при котором ребята перенесут все ящики к газели в первую стопку, или NO, если такого способа нет.
Примеры
Входные данные Выходные данные
1 5
2 1 3 5 3
YES
2 4
1 5 2 3
NO

Замечание
В первом примере сначала второй мальчик пройдется два раза, таким образом перенеся два ящика из четвертой стопки во вторую. После этого шага d = (2,3,3,3,3). Потом первый мальчик пройдется 3 раза, перетащив все ящики в первую стопку.
Во втором примере мальчикам не удастся перенести все ящики в первую стопку.
 
Ужасная болезнь поражает коров. Фермер Джон хочет их защитить.
Амбар ФД - это узкое длинное здание, содержащее N стойл в ряд (2≤N≤105). Некоторые из этих стойл уже заняты коровами, некоторые - свободны. Прочитав о необходимости социального дистанцирования, ФД хочет максимизировать D, где D, это расстояние между двумя ближайшими занятыми стойлами. Например, если стойла 3 и 8 ближайшие, которые заняты, тогда D=5.

Две новых коровы пополнили стадо ФД и он должен решить, в какое не занятое стойло разместить каждую из них. Определите, ка к он должен разместить этих коров, чтобы в результате D, стало максимальным из возможных. ФД не может передвигать никакую из имеющихся коров, он может только назначить стойла новым коровам.

Входные данные
Первая строка ввода содержит N. Следующая строка содержит строку длиной N из 0 и 1, описывающая последовательность стойл в амбаре. 0 означает пустое стойло, 1 означает занятое стойло. В строке имеется как минимум два нуля, что достаточно для размещения двух коров.
Выходные данные
Выведите наибольше значение D (наименьшее расстояние между двумя занятыми стойлами), которое ФД может получить добавлением двух новых коров оптимальным образом.
Примеры
Входные данные Выходные данные  
1 14
10001001000010
2 В этом примере ФД может добавить коров так: 10x010010x0010 где x показывает новых коров. В этом случае D=2. Невозможно разметить коров так, чтобы получить D больше.
Аня — страстный любитель ювелирных изделий. Ее коллекция насчитывает множество бриллиантов, изумрудов и алмазов.

...Срочная новость! Бесценный змеиный рубин Клеопатры был украден!

Три дня назад мир потрясло сенсационное известие: исследовательская экспедиция обнаружила в одном из храмов, построенных во времена великой египетской императрицы Клеопатры, потайную комнату. В ней кроме бронзовой статуи императрицы обнаружилась поразительной красоты диадема, ранее считавшаяся бесследно утерянной! Ученые сообщили, что диадема увенчана алым a-каратным рубином в форме змеиной головы. Однако буквально пару часов назад поступила новость, что бесценное украшение было изувечено: кто-то пробрался в камеру хранения диадемы и вырезал из нее рубин! Полиция устанавливает круг подозреваемых...


Услышав о краже рубина, Аня сразу бросилась исследовать информацию на черных рынках. В течение дня она обнаружила N объявлений о продаже рубина в форме змеиной головы, утверждающих что это именно украденная древняя ценность. Аня не простит себе, если она упустит такой бесценный экспонат для своей коллекции, поэтому она приказала своему помощнику Глебу срочно купить все эти камни, надеясь приобрести среди них настоящую реликвию.

Купив все N камней, Глеб тут же провел несколько пробных измерений, взвесив некоторые наборы из них, и отправил результаты Ане по электронной почте. Тем временем она проконсультировалась с известным исследователем старины Андрэ Шесто-Мерта по поводу украденной драгоценности и узнала, что по всем имеющимся историческим источникам рубин весил не a карат, как утверждали журналисты, а b карат!

Зная результаты взвешиваний Глеба, и учитывая, что все поддельные камни весят a карат, и только настоящий змеиный рубин может весить b карат, определите, какие из купленных камней могут на самом деле являться потерянной реликвией великой императрицы прошлого.

Входные данные
В первой строке находятся четыре целых числа N, a, b и K (1 ≤ N ≤ 200, 1 ≤ a, b ≤ 1 000 000, a ≠ b, 1 ≤ K ≤ 1 000).

Далее идут K строк, описывающих взвешивания, проведенные Глебом.

Первое число в i-ом описании — wi (1 ≤ wi ≤ 200 000 000), суммарный вес группы камней, участвовавших в i-ом взвешивании.

Второе число — mi (1 ≤ mi ≤ N) — количество камней, участвовавших в i-ом взвешивании.

Далее следуют mi целых чисел, упорядоченных по возрастанию, — номера камней, участвовавших в i-ом взвешивании.

Выходные данные
Если среди купленных Глебом камней змеиного рубина точно нет, выведите строку "Fail" (без кавычек).

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

Если же Глеб в некоторый момент ошибся в расчетах, и присланная им информация о взвешиваниях не может соответствовать действительности, выведите строку "Impossible" (без кавычек).
Примеры
Входные данные Выходные данные
1 4 15 17 2
30 2 1 3
47 3 2 3 4
2
2 4
2 3 15 17 3
30 2 1 2
30 2 2 3
47 3 1 2 3
Impossible
3 2 1 2 2
1 1 2
1 1 1
Fail

Примечание
В первом тесте из первого взвешивания мы делаем вывод, что первый и третий камни гарантированно поддельные. С другой стороны, среди второго, третьего и четвёртого камня точно есть настоящий. Значит настоящим может оказаться второй или четвёртый камень.

Во втором тесте Глеб ошибся в измерениях, потому что из первых двух измерений следует, что все камни фальшивые, а из последнего — что настоящий камень, тем не менее, среди них присутствует.

В третьем тесте из результатов явно следует, что оба приобретенных камня фальшивые.
Выведите фамилии и имена учащихся в порядке убывания их среднего балла.

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Общее число учащихся не превосходит 100001.
Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Если несколько учащихся имеют одинаковые средние баллы, то их нужно выводить в порядке, заданном во входных данных.
 

Примеры
Входные данные Выходные данные
1 2
Markov Valeriy 1 1 1
Ivanov Ivan 2 2 2
Ivanov Ivan
Markov Valeriy
2 3
Markov Valeriy 5 5 5
Sergey Petrov 1 1 1
Petrov Petr 3 3 3
Markov Valeriy
Petrov Petr
Sergey Petrov
Выведите фамилии и имена учащихся, не имеющих троек (а также двоек и колов).

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Порядок вывода должен быть таким же, как в исходных данных.
 
Примеры
Входные данные Выходные данные
1 3
Babat Anna 5 4 3
Belova Galina 4 3 5
Moroz Yaroslav 3 5 4
 
Поделиться
Класснуть