問題文
整数 n と オラクル O が入力として与えられる。
0 以上 2n 未満のある整数 L が存在し、オラクル O は 0≤x<2n を満たす任意の整数 x に対して、次式を満たす。
∣x⟩nO{−∣x⟩n∣x⟩n(x=L)(x=L)
量子状態 ∣0⟩ から、測定時に 4/2n 以上の確率で ∣L⟩ が観測されるような状態 ∣ψ⟩ を作り出す操作を、 n 量子ビットをもつ量子回路 qc 上に実装せよ。
より正確な問題文
量子状態 ∣0⟩ に qc を作用させた後の状態 ∣ψ⟩ を、 ai を状態 ∣i⟩ の複素振幅として次式で定義する。
∣ψ⟩=i=0∑2n−1ai∣i⟩
このとき、次式の条件を満たすような qc を構築せよ。
∣aL∣2≥2n4
制約
- 3≤n≤10
- 整数は リトルエンディアン にしたがってエンコードすること
- グローバル位相 は問わない。
- 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
"""
You can apply oracle as follows:
qc.compose(o, inplace=True)
"""
def solve(n: int, o: QuantumCircuit) -> QuantumCircuit:
qc = QuantumCircuit(n)
# Write your code here:
return qc