Ctrl K

Подсчёт элементов в формуле

Сложная
Дана химическая формула compound. Она строится по таким правилам: - название элемента — заглавная латинская буква, за которой может идти несколько строчных (H, Mg, Uuo); - после элемента может стоять количество — целое число не меньше 2 без ведущих нулей; если числа нет, элемент встречается один раз; - формулы можно записывать подряд: H2O2Na — тоже формула; - непустую формулу можно взять в скобки и после закрывающей скобки указать количество по тем же правилам: (OH)2 означает, что группа повторяется дважды. Посчитайте, сколько атомов каждого элемента содержит формула, и верните результат строкой: элементы по алфавиту (сравнение строк как обычно), после каждого — его количество, если оно больше 1.
Пример 1
compound="C2H5OH" → 'C2H6O'

Углерода 2, водорода 5 + 1 = 6, кислорода 1. По алфавиту: C, H, O; единицу у кислорода не пишем.

Пример 2
compound="Ca3(PO4)2" → 'Ca3O8P2'

Группа PO4 повторяется дважды: фосфора 2, кислорода 8. Кальция 3.

Пример 3
compound="Fe((OH)2Cl)3" → 'Cl3FeH6O6'

Внутренняя группа OH удваивается, затем вся внешняя группа утраивается: кислорода и водорода по 6, хлора 3, железа 1.

Ограничения
  • 1 ≤ len(compound) ≤ 1000
  • compound состоит из латинских букв, цифр и скобок и записана по правилам выше
  • Количество атомов каждого элемента меньше 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОдинаковые буквы на расстоянии СложнаяКалькулятор со скобками и переменными СложнаяУпрощение многочлена с буквами СложнаяВитрина: выручка плюс разнообразие СложнаяРазложить анаграммы по группам Средняя
загружаем Python…
Вход
compound="C2H5OH"
Ожидается
'C2H6O'

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 176 тестов на сервере, включая скрытые.