📜  门|门模拟 2017 |第 30 题(1)

📅  最后修改于: 2023-12-03 15:28:49.226000             🧑  作者: Mango

门|门模拟 2017 |第 30 题

这是一道关于模拟的编程题目,需要编写一段程序,模拟门的开关操作,并输出结果。

题目描述

门有两种状态,开和关。对于每个门,都有若干个开关它的按钮。每次按下按钮,门就会改变状态。如果门原来是开着的,按下按钮后它就会关上;如果门原来是关着的,按下按钮后它就会打开。

现在,你需要编写一段程序,模拟这个过程。首先,你需要读入门的数量、按钮数量,每个门的初始状态,以及每个按钮对应的门。接着,根据输入的按钮操作,模拟门的状态,并输出最终状态。

输入格式

第一行包含两个整数 $n$ 和 $m$,表示门的数量和按钮数量。( $1\leq n,m\leq 100$)

第二行包含 $n$ 个整数 $s_1,s_2,\dots,s_n$,其中 $s_i$ 表示第 $i$ 个门的初始状态,为 $0$ 或 $1$。

第三行包含 $m$ 个整数 $t_1,t_2,\dots,t_m$,其中 $t_i$ 表示第 $i$ 个按钮操作的门编号。

输出格式

输出 $n$ 个整数,表示每个门最终状态,以空格分隔。

样例输入1
3 2
1 0 1
1 2
样例输出1
0 1 0
样例输入2
3 3
1 0 1
1 2 3
样例输出2
0 1 0
代码实现

这道题目可以使用一个长度为 $n$ 的数组 $doors$ 来表示所有门的状态。接着,遍历每个按钮对应的门编号,将对应门的状态取反,即表示按下了按钮。最后输出数组 $doors$ 即可。

n, m = map(int, input().split())
doors = list(map(int, input().split()))
buttons = list(map(int, input().split()))

for button in buttons:
    doors[button - 1] = 1 - doors[button - 1]

print(" ".join(map(str, doors)))

以上是一个简单的 Python 实现。代码先读入输入数据,然后通过遍历按钮编号的方式依次修改对应门的状态。最后输出所有门的状态即可,输出时需要将整数转换为字符串,使用 join() 函数连接为一个字符串。