1. 程式人生 > 其它 >【NOIP2017提高組正式賽】時間複雜度

【NOIP2017提高組正式賽】時間複雜度

技術標籤:字串

時間複雜度

題面

Description

小明正在學習一種新的程式語言 A++,剛學會迴圈語句的他激動地寫了好多程式並給出了他自己算出的時間複雜度,可他的程式設計老師實在不想一個一個檢查小明的程式,於是你的機會來啦!下面請你編寫程式來判斷小明對他的每個程式給出的時間複雜度是否正確。
A++語言的迴圈結構如下:
在這裡插入圖片描述
其中“ F i x y ”表示新建變數 i (變數 i 不可與未被銷燬的變數重名)並初始化為 x,然後判斷 i 和 y 的大小關係,若 i 小於等於 y 則進入迴圈,否則不進入。每次迴圈結束後 i 都會被修改成 i +1,一旦 i 大於 y 終止迴圈。

x 和 y 可以是正整數(x 和 y 的大小關係不定) 或變數 n。n 是一個表示資料規模的變數,在時間複雜度計算中需保留該變數而不能將其視為常數,該數 遠大於 100。
“ E ”表示迴圈體結束。迴圈體結束時,這個迴圈體新建的變數也被銷燬。
注:本題中為了書寫方便,在描述複雜度時,使用大寫英文字母“O”表示通常意義下“Θ”的概念。

Input

輸入檔案第一行一個正整數 t,表示有 t(t ≤ 10)個程式需要計算時間複雜度。每個程式我們只需抽取其中 “F i x y” ” 和“ “E” ”即可計算時間複雜度 。 注意: 迴圈結構允許巢狀 。
接下來每個程式的第一行包含一個正整數 L 和一個字串,L 代表程式行數,字串表示這個程式的複雜度,“O(1)”表示常數複雜度,“O(n^w)”表示複雜度為