CF1156G Optimizer

题目描述

让我们分析一种奇怪的编程语言编写的程序。在这种语言中,变量名由 $1$ 到 $4$ 个字符组成,每个字符可以是小写或大写拉丁字母,或数字。还有一个额外的限制:第一个字符不能是数字。 该语言中有四种操作,每种操作由一个字符表示:$、^、\# 或 &。 程序中的每一行有以下两种格式之一: - =,其中 和 是有效的变量名; - =,其中 、 和 是有效的变量名, 是操作符字符。 程序按行顺序执行,执行结果存储在名为 res 的变量中。如果程序中从未对 res 赋值,则结果等于程序运行前 res 的值。 如果无论 $、^、\# 和 & 这四个操作符分别表示什么操作(但显然,对相同参数执行相同操作结果相同),以及无论程序执行前变量的值如何,执行完第一个程序后 res 的值总是等于执行完第二个程序后 res 的值(两个程序独立执行),则称两个程序是等价的。 给定一个包含 $n$ 行的程序。你的任务是编写一个等价的程序,且该程序的行数尽可能少。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 1000$),表示程序的行数。 接下来有 $n$ 行,描述该程序本身。每行均符合题目描述的格式,且没有多余的空格。

输出格式

第一行输出 $k$,即等价程序的最小行数。 接下来输出 $k$ 行,不含任何空格,表示等价的程序,格式与题目描述一致。

说明/提示

由 ChatGPT 4.1 翻译