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$ 位整数以确保答案正确。