P14088 [ICPC 2023 Seoul R] Fraction

题目描述

规定一个基础分数形如 $(a,b,c)$(实际输入中不包含逗号,下文扩展分数同理),其中 $1\le a,b,c\le9$,且均为正整数,表示 $a+\cfrac{b}{c}$。规定一个扩展分数形如 $(a',b',c')$,其中 $a',b',c'$ 都既可以是 $[1,9]$ 范围内的正整数,也可以是另一个扩展分数,并且该扩展分数表示 $a'+\cfrac{b'}{c'}$。注意一个基础分数同时也是一个扩展分数,并且分数的长度是有限的。 现在给出一个扩展分数,我们希望用一个最简分数表示它的值。例如,扩展分数 $((1\ 2\ 4)(5\ 2\ 3)(4\ 3\ (2\ 7\ 3)))$ 和它的最简分数形式是: $$\left(1+\dfrac{2}{4}\right)+\cfrac{5+\cfrac2 3}{4+\cfrac 3{2+\cfrac 7 3}}=\dfrac{991}{366}$$ 你需要编写一个程序,对于给定的扩展分数(以字符串形式给出),将它转换为最简分数形式。

输入格式

第一行一个正整数 $n$,表示符号的数量,其中一个符号是左、右小括号和数字 $1\sim9$ 中的任意一个字符。 第二行用空格分隔的 $n$ 个符号,表示一个扩展分数的字符串形式,注意输入可能不合法。

输出格式

当输入合法时,输出两个互质的正整数 $x,y$,表示答案为 $\dfrac{x}{y}$;否则,输出 $-1$。

说明/提示

对于 $100\%$ 的数据,$2\le n\le100$。 你可能需要使用 $64$ 位整数以确保答案正确。