#P7024. [NWRRC 2017] Fygon 2.0
[NWRRC 2017] Fygon 2.0
Description
心爱的编程语言 Fygon 的新版本发布了!全新的 Fygon 2.0 仍然只有两个语句。第一个语句是 lag。它几乎可以替代任何其他语句。第二个语句是一个 for 循环:
for <variable> in range(<from>, <to>):
<body>
for 循环使得从 from 到 to 进行迭代,包含两端。
如果 from 大于 to,则循环体不执行。
是从 a 到 z 的小写字母,除了 n,它是一个在给定代码片段之前定义的变量。
和 可以等于外层循环中定义的任何变量。此外, 可以是 1, 可以是 n。
循环体缩进四个空格,并且至少包含一个语句。
如果你熟悉 Fygon 1.0,你会注意到,秉承最佳编程实践的精神,Fygon 2.0 不向后兼容,因为 range 函数现在需要两个参数。
新版本的性能显著提高,因此你可以编写更多嵌套的 for 循环。这就是为什么我们不再关注操作的确切数量,而是关注程序的渐进复杂性。为简单起见,所有 for 循环都嵌套在一个链中,并且在所有 for 循环中恰好有一个 lag 语句。所有循环变量都不同,并且不等于 n。
让我们定义 为给定 Fygon 程序执行的 lag 操作的数量,作为 n 的函数。对于非负整数 和正有理数 ,如果
我们称 是程序的渐进复杂性。
给定一个 Fygon 2.0 程序,找出其渐进复杂性。
Input Format
输入的第一行包含单个整数 —— Fygon 2.0 程序中的行数。接下来的 行包含程序本身。程序至少有 1 个,最多有 20 个 for 语句。每个 for 语句包含一个嵌套的 for 语句或 lag 语句。
Output Format
输出数字 和 。 应以不可约分数 的形式输出,其中 和 互质。
4
for i in range(1, n):
for j in range(1, i):
for k in range(j, n):
lag
3 1/3
Hint
时间限制:3 秒,内存限制:512 MB。
题面翻译由 ChatGPT-4o 提供。
京公网安备 11011102002149号