#P5698. [CTSC1998] 算法复杂度
[CTSC1998] 算法复杂度
题目背景
CTSC1998 D1T3
我们在编程时,最关心的一个问题就是算法的时间复杂度。但是分析一个程序的复杂度是一项很困难的工作,在程序的码风不是很好的情况下更是如此。
所以,专门研究算法的 SERKOI 小组决定开发出一个分析程序时间复杂度的软件。由于这是一个全新的领域,所以 SERKOI 小组决定先从简单情况入手进行分析。
题目描述
为了简化问题,程序只包含循环和顺序结构,程序的结构定义如下:
一个语句块的结构是递归定义的,如下所示:
或者
或者为
或者为
语句块可以为空。
注意:
-
一个程序都是以 开始,以相应的 结束;
-
表示其中的语句重复执行 次;
-
表示执行 个单位操作;
-
上面两点中的 可以是一个正整数或 ;
-
语句的作用是跳出这一层循环, 语句的作用是跳过这一层循 环的其它语句,直接进入下一次循环。如果它( 或 )不在任何一层循环中,请忽略它们。
你需要写一个程序,用来求出题目描述的程序的时间复杂度,并以多项式的形式输出。
注意,该多项式是关于 的多项式,而且,常数项和系数不能省略。
数据保证能求出该程序的时间复杂度。
输入格式
输入中包含一个完整的程序, 每两条语句之间至少用一个空格或换行符隔开。
输出格式
将计算出的时间复杂度多项式按降幂排列输出。
begin loop n loop 3 loop n
op 20
end end end
loop n op 3 break end
loop n loop n
op 1
break
end end
end
60n^2+n+3
begin
op n
loop 3
op n
break
end
loop n
loop n
op 1
continue
op n
end
end
end
n^2+2n
提示
循环的嵌套最多不超过 层。
保证最终时间复杂度多项式每项的系数不超过 。