UVA1348 Tomato Automata
题目描述
Tomato Automata 是一个很酷的小程序。输入一个无限的1和0序列,
程序会输出一个数字序列。它广泛应用于Stanescu操作系统(SOS)中。
Tomato Automata 是用非常简单的Tomato 语言编写的。下面是它的说明:
1. Tomato语言是一种非常简单但很强大的语言。
2. 每行恰好有一个命令,程序从第一行开始执行。
3. Tomato程序中的行号按顺序为$1$到$N$($N \le 100000$)的整数。$N$将会在输入中给出。
4. Tomato语言中只有五种命令:`ifgo`,`jump`, `pass`, `loop`, `die`。
5. 代码执行时,每个命令都会打印其行号。
6. `ifgo`命令只有一个参数。当执行到`ifgo x`时,程序将会从输入流之中读入一个01位。如果读入的位为1则跳至第`x`行,否则继续执行下一行。
7. `jump`命令只有一个参数。当执行到`jump x`时,程序会直接跳至第`x`行。
8. `pass`命令没有参数。它除了也会打印行号外什么也不干。
9. `die`命令没有参数。它会在打印行号后立即终止程序。它不会出现在循环中。
10. `loop`命令是唯一一个有两个参数的命令。`loop s x`表示从第`s`行到当前行会循环执行`x`次(从第一次到达第`s`行算第一次)。保证第`s`行在`loop`所在行之前。
11. `jump`和`ifgo`命令只能在最内层循环中跳转。不能从循环外跳至某个循环内,也不能从循环内跳至循环外。
12. 循环只能严格嵌套,不会存在两个循环的行区间相交但不相包含的情况。
13. 除非最后一行是`die`命令,否则最后一行执行完之后程序会从第一行开始执行。
14. 在命令及其参数之前和之后可能会出现多个空白符号。
15. 程序每行最多有80个字符(包括空白符号)。
现给出若干个番茄程序,问程序打印出的字符串最长可以是多少。如果程序可能死循环输出$infinity$。
输入格式
输入若干份程序代码,每两份代码之间用一个空行隔开。保证每份代码都是正确的。
输出格式
对于每份代码,输出程序打印出的字符串最长可以是多少。如果程序可能死循环,输出$infinity$。保证答案不会超过$10^9$。