B2: XOR Oracle

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

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

∣x⟩∣y⟩→O∣x⟩∣y⊕x1⊕x2⊕...⊕xn⟩\ket{\mathbf{x}}\ket{y} \xrightarrow{O} \ket{\mathbf{x}}\ket{y \oplus x_1 \oplus x_2 \oplus ... \oplus x_n}

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

制約

  • 1≤n≤101 \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

入力例

  • ∣x⟩∣y⟩=12(∣001⟩+∣110⟩)\ket{\mathbf{x}}\ket{y} = \frac{1}{\sqrt{2}} (\ket{001} + \ket{110}): 実装されたオラクル OO は次式の遷移を満たす。
∣x⟩∣y⟩=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])

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