解説
のときのみ、 に ゲートを作用させる量子回路を実装する問題です。
問題 A2 の解答を思い出すと、 のときのみ、 に ゲートを作用させることはできそうです。
では、 ときは、 ゲートを 回作用させ、 のときは ゲートを 回作用させる方法を考えましょう。
これは次の操作を順に行うことによって実現できます。
- 操作 1 : に ゲートを作用させる。
- 操作 2 : のときのみ、 に ゲートを作用させる。(問題 A2 と同様の方法)
よって、のとき を利用すると
という状態遷移が成り立つため、この問題を解くことができます。
の場合の量子回路は次のように表されます。

回路の深さは です。
解答例
解答例は以下の通りです。
from qiskit import QuantumCircuit, QuantumRegister
from qiskit.circuit.library import XGate
def solve(n: int) -> QuantumCircuit:
m, k = QuantumRegister(1), QuantumRegister(n)
qc = QuantumCircuit(m, k)
qc.x(m[0])
qc.x(k)
qc.compose(XGate().control(len(k)), [*k, m[0]], inplace=True)
qc.x(k)
return qc