P7024 [NWRRC 2017] Fygon 2.0

题目描述

心爱的编程语言 Fygon 的新版本发布了!全新的 Fygon 2.0 仍然只有两个语句。第一个语句是 lag。它几乎可以替代任何其他语句。第二个语句是一个 for 循环: ``` for in range(, ): ``` for 循环使得从 from 到 to 进行迭代,包含两端。 如果 from 大于 to,则循环体不执行。 是从 a 到 z 的小写字母,除了 n,它是一个在给定代码片段之前定义的变量。 和 可以等于外层循环中定义的任何变量。此外, 可以是 1, 可以是 n。 循环体缩进四个空格,并且至少包含一个语句。 如果你熟悉 Fygon 1.0,你会注意到,秉承最佳编程实践的精神,Fygon 2.0 不向后兼容,因为 range 函数现在需要两个参数。 新版本的性能显著提高,因此你可以编写更多嵌套的 for 循环。这就是为什么我们不再关注操作的确切数量,而是关注程序的渐进复杂性。为简单起见,所有 for 循环都嵌套在一个链中,并且在所有 for 循环中恰好有一个 lag 语句。所有循环变量都不同,并且不等于 n。 让我们定义 $f(n)$ 为给定 Fygon 程序执行的 lag 操作的数量,作为 n 的函数。对于非负整数 $k$ 和正有理数 $C$,如果 $$\lim_{n \to \infty}{\frac{f(n)}{C \cdot n^k}} = 1$$ 我们称 $C \cdot n^{k}$ 是程序的渐进复杂性。 给定一个 Fygon 2.0 程序,找出其渐进复杂性。

输入格式

输入的第一行包含单个整数 $m$ —— Fygon 2.0 程序中的行数。接下来的 $m$ 行包含程序本身。程序至少有 1 个,最多有 20 个 for 语句。每个 for 语句包含一个嵌套的 for 语句或 lag 语句。

输出格式

输出数字 $k$ 和 $C$。$C$ 应以不可约分数 $p/q$ 的形式输出,其中 $p$ 和 $q$ 互质。

说明/提示

时间限制:3 秒,内存限制:512 MB。 题面翻译由 ChatGPT-4o 提供。