Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
Есть три сосуда с водой. В одном из них A миллилитров воды, в другом — B миллилитров, в третьем — C. Разрешается следующая операция. Можно перелить воду из одного сосуда в другой так, чтобы в том сосуде, в который мы переливаем, количество воды после переливания было в два раза больше, чем до переливания. То есть, если до переливания в сосудах было A, B и C миллилитров соответственно, и мы переливаем, например, из второго сосуда в третий, то после переливания в сосудах должно оказаться A, B–C, 2С миллилитров соответственно (такое переливание можно делать только при условии, когда B≥C). Эту операцию можно повторять не более 10000 раз.
Напишите программу, которая определит, можем ли мы в результате освободить один из сосудов.
Во входном файле записаны неотрицательные целые числа A, B, C — количество воды в каждом из сосудов изначально. Числа A, B, C не превышают 1018.
Если освободить один из сосудов можно, то выведите сначала количество операций, которое для этого понадобится, а дальше — сами операции. Каждая операция описывается двумя числами — номером сосуда, из которого мы переливаем, и номером сосуда, куда переливаем. Минимизировать количество операций переливания не требуется, но их количество не должно превышать 10000.
Если освободить сосуд невозможно (или на это требуется больше 10000 операций), выведите в выходной файл одно число –1 (минус один).
1 2 10
2 3 1 2 1
0 1 0
0
Дано выражение, содержащее натуральные числа и знаки сложения (+) и умножения (*).
Расставьте скобки так, чтобы значение этого выражения была наибольшим возможным.
Гарантируется, что максимальное значение выражения не превосходит 10000.
Входные данные
Вводится одна строка длиной не более 100 символов.
Выходные данные
Выведите ту же строку с расставлеными скобками.
Примеры
Входные данные | Выходные данные |
2+2*3*4 | (2+2)*3*4 |
2+2*3*4 | (2+2)*(3*4) |
2+2*3*4 | ((2+2)*3)*4 |
1+1 | 1+1 |
1+1 | (1)+1 |
Дана обыкновенная дробь N/M. Представьте ее в виде десятичной дроби и выведите первую цифру после запятой.
Вводятся два натуральных числа N и M, не превосходящие 1000.
Выведите одну цифру. Если решений несколько, выведите 0, если это верный ответ, в противном случае – наибольшую возможную цифру
1 2
5
4 4
0
1000 3
3
Вася подошел к перекрестку и увидел, что на светофоре в этот момент загорелся красный свет. Вася залюбовался тем, как четко переключаются сигналы светофора:
красный – желтый – зеленый – желтый – красный – желтый – зеленый - …
Когда в очередной раз загорелся зеленый свет, Вася решил-таки перейти дорогу. К этому моменту зеленый свет зажегся в i-ый раз. Напишите программу, которая определит, сколько раз за это время загорался красный свет (считая и тот момент, когда Вася только подошел к перекрестку) и сколько раз — желтый.
Во входном файле задано одно число i, задающее, в какой раз загорелся зеленый свет (1≤i≤100).
В выходной файл выведите два числа. Первое — сколько раз загорался красный свет, второе — сколько раз загорался желтый.
2
2 3
Оргкомитет Московской олимпиады по информатике решил издать книгу с решениями олимпиадных задач сразу на двух языках – на Паскале и на Си. При этом тексты решений на Паскале решили напечатать с одной стороны книги, а на Си – с другой стороны. Таким образом книгу стало можно читать как с начала, так и с конца, предварительно ее перевернув.
Тексты решений на Паскале заняли N первых страниц, которые пронумеровали от 1 до N. А тексты на Си – M последних страниц, которые пронумеровали числами от 0 (последняя страница) до M–1.
Книга состоит из отдельных листов. У листа две стороны, на каждой из которых печатается одна страница книги. При необходимости, между текстом на Паскале и текстом на Си оставляется одна пустая страница. Листы строго по порядку сшиваются и образуют книгу.
Например, если N=5 и M=3 страницы книги идут в следующем порядке. Сначала страницы решений на Паскале: 1 2 3 4 5, затем – страницы решений на Си – 2 1 0. Здесь на первый лист попадают страницы номер 1 и 2 решений на Паскале, на второй – 3 и 4, на третий — страница 5 решений на Паскале и страница 2 решений на Си, и, наконец, на четвертый лист — страницы 1 и 0 решений на Си (ровно в таком порядке!).
Если же, например, N=2 и M=3, то на первом листе будут напечатаны страницы 1 и 2 решений на Паскале, на втором – пустая страница и страница 2 решений на Си, на третьем – страницы 1 и 0 решений на Си.
Напишите программу, которая по номеру листа определяет, решения на каком языке и какие номера страниц должны быть напечатаны на этом листе.
Во входном файле содержатся три числа: N, M и номер листа P (1≤N≤1000, 1≤M≤1000, 1≤P≤1000).
Выходной файл должен содержать две строки. В первой строке должно идти описание той стороны листа, которая будет идти в книге раньше, во второй строке — описание второй стороны листа.
Описание страницы должно состоять из заглавной английской буквы P (если это страница решения на Паскале) или C (если это страница решения на C), ровно одного пробела и номера соответствующей страницы.
Если страница должна быть оставлена пустой, то в соответствующей строке должны быть напечатаны прочерки (символ минус “–“) как вместо буквы, обозначающей язык решений, так и вместо номера страницы (см. примеры).
Если листа с таким номером в книге не будет вообще, в обеих строках должны идти описания, соответствующие пустой странице.
5 3 2
P 3 P 4
5 3 3
P 5 C 2
5 3 4
C 1 C 0
2 3 2
- - C 2
2 3 10
- - - -