問題文
整数 n が入力として与えられる。
次式により定義される オラクル O を n 量子ビット x と 1 量子ビット y をもつ量子回路 qc 上に実装せよ。
∣x⟩∣y⟩O∣x⟩∣y⊕x1⊕x2⊕...⊕xn⟩
ただし、xi は x の計算基底の i 番目のビットを表す。
制約
- 1≤n≤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⟩=21(∣001⟩+∣110⟩):
実装されたオラクル O は次式の遷移を満たす。
∣x⟩∣y⟩=21(∣101⟩+∣010⟩)O21(∣100⟩+∣011⟩)
ヒント
開く
- 次のようにして、x の量子ビット数 n を得ることができます。
n = len(x)
- 次のようにして、x の i 番目の量子ビットに何らかの量子ゲート g を作用させることができます。
qc.g(x[i])