Есть ответ 👍

Назовём скобочную последовательность, состоящую из трёх видов скобок (круглых, квадратных или фигурных) , если она может быть построена по следующим правилам:

пустая последовательность является правильной.

если

a

— правильная скобочная последовательность, то

{

a

}

,

[

a

]

и

(

a

)

— правильные скобочные последовательности.

если

a

и

b

— правильная скобочная последовательность, то

a

b

— правильная скобочная последовательность.

иначе говоря, правильная скобочная последовательность получается, если мы берём какое-то выражение с корректно расставленными скобками и убираем оттуда всё, кроме скобок.

вам дана скобочная последовательность длины

n

. вам разрешено вставлять скобки в любое место последовательности (в начало, в конец и между двумя любыми скобками). ваша — добавить не более

n

скобок так, чтобы последовательность превратилась в правильную.

разберём три примера к . в первом примере все три скобки добавлены в конец — мы закрываем уже открытые скобки. во втором примере последовательность и так является правильной. можно вывести её, можно, к примеру, добавить ещё пару скобок — минимальность ответа не требуется. в третьем примере последовательность правильной не является — скобки закрываются не в том порядке. можно исправить, например, вставив открывающую квадратную скобку сперели и закрывающую квадратную — перед закрывающей фигурной.


формат ввода

на вход подаётся непустая строка из не более, чем

1

0

4

символов, состоящая из символов ‘{’, ‘}’, ‘[’, ‘]’, ‘(’ и ‘)’.

формат вывода

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

пример 1

ввод вывод

( [ {

( ) [ ] { }

пример 2

ввод вывод

( [ ] )

( ) [ ] [ ] ( )

пример 3

ввод вывод

{ [ } ]

{ } [ ] { } [ ]

примечания

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

в qbasic или паскаль

197
282
Посмотреть ответы 2

Ответы на вопрос:

Alyona2022
4,6(22 оценок)

pascalabc.net

begin

  var s : = readlnstring;

  var t : = '';

  foreach var c in s do

    case c of

      '(': t += c + ')';

      '[': t += c + ']';

      '{': t += c + '}';

      ')': t += '(' + c;

      ']': t += '[' + c;

      '}': t += '{' + c

    end;

  write(t)

end.

ГIOJLNHA
4,5(53 оценок)

Заметим, что число нулей в записи числа = максимальная степень десятки, на которую делится число = минимальная из степеней двойки и пятерки, входящих в разложение на простые множители этого числа. [ первое равенство очевидно, второе можно доказать от противного] например, 7500 имеет на конце 2 нуля: 7500 = 2^2 * 3 * 5^4 - минимальная из степеней двойки и пятерки как раз 2. в разложении числа n! на простые множители пятерок всегда не больше, чем двоек: если в выражении n! =1*2*3**n есть множитель вида m*5^k, то есть и множитель m*2^k - хотя бы потому, что второе число меньше первого, а факториал - это произведение всех чисел меньше заданного. поэтому при разложении на простые множители степень двойки хотя бы степень двойки. используя наблюдение из первого параграфа, получаем: число нулей в конце десятичной записи числа n! совпадает с числом пятерок в разложении числа n! на простые множители. остается найти число пятерок в разложении. проще всего это понять на примере. 26! = 1 * 2 * 3 * 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 * 24 * 25 * 26 число чисел, делящихся на 5, среди первых 26 чисел равно пяти (это 5, 10, 15, 20, 25). это число можно найти, округлив вниз результат от деления 26/5. если подумать, можно понять, что в разложении 26! на простые множители 5 встретится не 5 раз - мы забыли учесть число 25, которое даст не одну пятерку, а две. и вообще, в ответ сомножитель что-то*5^n будут давать n пятерок. итого ответ для произвольного n: [n/5] + [n/5^2] + [n/5^3] + алгоритм: c = 0 пока [n/5] > 0:     увеличиваем c на [n/5]     n = [n/5] вывод c питон-3: n = int( c = 0 while n//5 > 0:     c += (n//5)     n = n//5 print(c)

Реши свою проблему, спроси otvet5GPT

  • Быстро
    Мгновенный ответ на твой вопрос
  • Точно
    Бот обладает знаниями во всех сферах
  • Бесплатно
    Задай вопрос и получи ответ бесплатно

Популярно: Информатика

Caktus Image

Есть вопросы?

  • Как otvet5GPT работает?

    otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса.
  • Сколько это стоит?

    Проект находиться на стадии тестирования и все услуги бесплатны.
  • Могу ли я использовать otvet5GPT в школе?

    Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое!
  • В чем отличия от ChatGPT?

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

Подпишись на наш телеграмм канал

GTP TOP NEWS