問題文
整数 n, L が入力として与えられる。
∣0⟩, ∣1⟩, ... ∣L−1⟩ の複素振幅 ai に −1 をかけるようなオラクル O を n 量子ビットをもつ量子回路 qc 上に実装せよ。
制約
- 1≤n≤5
- 1≤L≤2n
- グローバル位相 は問わない。
- 整数は リトルエンディアン にしたがってエンコードすること
- 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
def solve(n: int, L: int) -> QuantumCircuit:
qc = QuantumCircuit(n)
# Write your code here:
return qc
入力例
- n=2, L=3:
オラクル O は次式の遷移を満たす。
41(∣00⟩+∣10⟩+∣01⟩+∣11⟩)O41(−∣00⟩−∣10⟩−∣01⟩+∣11⟩)
ヒント
開く
- 次のようにして、何らかの量子ゲート Gate の 複数制御ゲートを作用させることができます。
from qiskit.circuit.library import Gate
qc.append(Gate().control(n - 1), range(n))