CF1175B Catch Overflow!

题目描述

给定一个用某种基础语言编写的函数 $f$。该函数接受一个整数值,并立即将其赋值给某个变量 $x$。$x$ 是一个整数变量,取值范围为 $0$ 到 $2^{32}-1$。函数包含三种类型的指令: - for $n$ —— for 循环; - end —— 将每个位于 "for $n$" 与对应 "end" 之间的指令执行 $n$ 次; - add —— 将 $x$ 加 $1$。 执行完所有指令后,返回 $x$ 的值。 每个 "for $n$" 都有与之匹配的 "end",因此保证函数是合法的。"for $n$" 后面可以紧跟 "end"。add 指令可以出现在任何 for 循环之外。 注意,"add" 指令可能会导致 $x$ 溢出!也就是说,某些 "add" 指令执行后 $x$ 的值可能会超过 $2^{32}-1$。 现在你运行 $f(0)$,想知道最终的 $x$ 是否正确,还是因为溢出而变得不正确。 如果执行过程中发生溢出,则输出 "OVERFLOW!!!";否则输出最终的 $x$ 值。

输入格式

第一行包含一个整数 $l$($1 \le l \le 10^5$),表示函数中的指令行数。 接下来的 $l$ 行,每行包含一条指令,类型如下: - for $n$($1 \le n \le 100$)—— for 循环; - end —— 将每个位于 "for $n$" 与对应 "end" 之间的指令执行 $n$ 次; - add —— 将 $x$ 加 $1$。

输出格式

如果在执行 $f(0)$ 的过程中发生溢出,则输出 "OVERFLOW!!!";否则输出最终的 $x$ 值。

说明/提示

在第一个样例中,第一个 "add" 被执行 1 次,第二个 "add" 被执行 150 次,最后一个 "add" 被执行 10 次。注意 "for $n$" 后面可以紧跟 "end","add" 也可以出现在任何 for 循环之外。 在第二个样例中,没有 "add" 指令,因此返回值为 0。 在第三个样例中,"add" 指令被执行次数过多,导致 $x$ 超过 $2^{32}-1$。 由 ChatGPT 4.1 翻译