B2: XOR Oracle

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

整数 nn が入力として与えられる。
次式により定義される オラクル OOnn 量子ビット x\mathbf{x}11 量子ビット yy をもつ量子回路 qc\mathrm{qc} 上に実装せよ。

xyOxyx1x2...xn\ket{\mathbf{x}}\ket{y} \xrightarrow{O} \ket{\mathbf{x}}\ket{y \oplus x_1 \oplus x_2 \oplus ... \oplus x_n}

ただし、xix_ix\mathbf{x} の計算基底の ii 番目のビットを表す。

制約

  • 1n101 \leq n \leq 10
  • グローバル位相 の変化は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit, QuantumRegister
 
 
def solve(n: int) -> QuantumCircuit:
    x, y = QuantumRegister(n), QuantumRegister(1)
    qc = QuantumCircuit(x, y)
    # Write your code here:
 
    return qc

入力例

  • xy=12(001+110)\ket{\mathbf{x}}\ket{y} = \frac{1}{\sqrt{2}} (\ket{001} + \ket{110})
    実装されたオラクル OO は次式の遷移を満たす。
xy=12(101+010)O12(100+011)\ket{\mathbf{x}}\ket{y} = \frac{1}{\sqrt{2}} (\ket{101} + \ket{010}) \xrightarrow{O} \frac{1}{\sqrt{2}} (\ket{100} + \ket{011})

ヒント

開く
  • 次のようにして、x\mathbf{x} の量子ビット数 nn を得ることができます。
n = len(x)
  • 次のようにして、x\mathbf{x}ii 番目の量子ビットに何らかの量子ゲート gg を作用させることができます。
qc.g(x[i])

解答を提出するにはログインしてください。