#P2269. Friends
Friends
描述
你打算和朋友们举办一场盛大的生日派对。在策划过程中,你发现需要对朋友集合进行大量运算。有一个由亚瑟(Arthur)、比内(Biene)和克莱门斯(Clemens)组成的小组,记为 ;还有一个你在滑雪时结识的朋友小组,成员包括丹尼尔(Daniel)、恩斯特(Ernst)、弗里达(Frida)和古斯塔夫(Gustav),记为 。如果你想同时邀请这两个小组,那么派对参与者集合就是 (这里的结果是两个集合的并集)。接着,你可以计算这两个小组的交集 ,其结果为空集。也许你想邀请小组 ,但要排除另一个小组 的所有成员,这可以表示为 。
交集(*)的运算优先级高于并集(+)和集合差(-)。所有运算都是左结合的,这意味着在表达式 中,若 和 优先级相同,你需要先计算 。
输入
输入包含一行或多行。每行包含一个需要计算的表达式。表达式在语法上是正确的,仅由以下字符组成:
- '{' 和 '}'
- 元素 'A' 到 'Z',分别代表从亚瑟(Arthur)到佐拉(Zora)的朋友。
- 运算符 '+'、'-' 和 '*'
- '(' 和 ')',用于对运算进行分组
- 换行符 '\n',表示表达式的结束
每行的长度不会超过 255 个字符。
输出
将计算得到的集合用花括号 '{' 和 '}' 括起来输出,每个结果占一行。集合中的元素按字母顺序排序。
输入数据 1
{ABC}
{ABC}+{DEFG}+{Z}+{}
{ABE}*{ABCD}
{ABCD}-{CZ}
{ABC}+{CDE}*{CEZ}
({ABC}+{CDE})*{CEZ}
输出数据 1
{ABC}
{ABCDEFGZ}
{AB}
{ABD}
{ABCE}
{CE}
来源
乌尔姆本地赛 1999