#P16943. [sgu341] Circuits
[sgu341] Circuits
题目描述
给定一个在离散时刻工作的数字逻辑电路。所有信号均为二进制值 。电路包含输入信号、导线、结点以及六种逻辑门:NOT、AND、NAND、OR、NOR、DFF。
| 逻辑门 | 输入个数 | 输出 |
|---|---|---|
NOT |
1 | 输入取反 |
AND |
至少 1 | 所有输入的逻辑与 |
NAND |
所有输入逻辑与的取反 | |
OR |
所有输入的逻辑或 | |
NOR |
所有输入逻辑或的取反 | |
DFF |
1 | 输入信号延迟一个时刻后的值 |
在第一个时刻开始之前,所有 DFF 的输出都初始化为 。之后给出若干个连续时刻的主输入值,你需要依次求出指定输出结点在每个时刻的值。
电路描述格式
输入由两个部分组成。第一部分描述电路:
- 若一行第一个非空字符为
#,该行为注释,可以忽略;空行也可以忽略。 INPUT(junction)表示junction是一个主输入结点。主输入的顺序就是这些语句出现的顺序。OUTPUT(junction)表示需要输出该结点的值。输出顺序就是这些语句出现的顺序。j1 = NOT(j2)或j1 = DFF(j2)定义一个单输入逻辑门。j1 = AND(j2, j3, ...)、NAND、OR、NOR定义一个有至少一个输入的逻辑门。
结点名只包含大小写英文字母、数字和下划线 _,长度小于 。
第一部分以一行恰好为 INPUT VALUES 结束。之后每一行给出一个时刻的主输入值:它是一个只包含 0 和 1 的字符串,长度等于主输入结点个数,并按 INPUT 语句出现的顺序对应各输入。
DFF(x) 在当前时刻输出的是上一时刻其输入 x 的值;所有 DFF 必须同时更新。
输入保证电路描述正确,并且电路能够正常工作。
输入格式
按题目描述给出电路以及各时刻输入值。结点总数不超过 ,输入时刻数不超过 ,整个输入文件小于 320 KB。
输出格式
对于 INPUT VALUES 后的每一行输入,输出一行二进制字符串。字符串中的各位依次对应所有 OUTPUT(...) 语句指定的结点。
样例
INPUT(a)
INPUT(b)
x = DFF(a)
t = OR(a, b)
y = AND(x, t)
OUTPUT(x)
OUTPUT(y)
INPUT VALUES
10
11
00
00
11
10
时间限制: 0.25 秒
空间限制: 64 MB