L1-8 幻想乡炼金学
题号:NC205726
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

幻想乡里面有一些神秘的炼金术士,为了"make 幻想乡 great again",建设和谐幻想乡,他们对一些神奇的材料进行了分析,得到了其炼金式,你能帮炼金术士们处理一下这些炼金式么?

幻想乡炼金学原理如下:

  • 原子表示为一个大写字母加零到多个小写字母,如C,Cu,Car。
  • 花括号表示下标,即前面一个或者一组原子的重复次数,下标是十进制正整数,大于1,小于100,如 H{2} 表示两个 H 原子。
  • 圆括号表示被括起来的原子是一个整体,只和下标一起使用,如 Cu(OH){2} 总共有1个 Cu,2个 O,2个 H。
  • 幻想乡的人们不喜欢套娃,所以任何括号都不会互相嵌套。
  • 幻想乡的人们比较随性,所以炼金式的任意位置都可能出现任意数量的空格。

你需要做的是:

  • 消除炼金式中的空格。
  • 把用下标表示的重复原子拆出来,按照顺序单独重复,如 H{2} 写成 HH ,Cu(OH){2} 写成 CuOOHH。

输入描述:

一行内输入一个合法的炼金式,只包含大小写字母,数字和空格,不超过150个字符。

输出描述:

一行内输出一个整数,表示转换后的炼金式。
示例1

输入

复制
Fe{2} (SO){3}

输出

复制
FeFeSSSOOO