問題文
整数 n, m, L, S0, S1, ⋯, Sn−1 と実数 θ が入力として与えられる。
0 以上 2n 未満の整数 x=x0+21x1+⋯2n−1xn−1 (xi∈{0,1}) に対して、関数 f(x) を次式で定義する。
f(x)=S0x0+S1x1+⋯+Sn−1xn−1
0 以上 2m 未満の任意の整数 x に対して
∣x⟩n∣0⟩mO{eiθ∣x⟩n∣0⟩meiθ∣x⟩n∣0⟩mf(x)=L (mod 2m)f(x)=L (mod 2m)
を満たす n+m 量子ビットオラクル O を実装せよ。
制約
- 1≤n,m≤9
- n+m≤10
- 0≤L<2m
- 0≤Sk<2m
- 0≤θ<2π
- 量子回路の 深さ は 100 を超えてはならない。
- 整数は リトルエンディアン にしたがってエンコードすること
- グローバル位相 は問わない。
- 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit, QuantumRegister
def solve(n: int, m: int, L: int, S: list[int], theta: float) -> QuantumCircuit:
x, y = QuantumRegister(n), QuantumRegister(m)
qc = QuantumCircuit(x, y)
# Write your code here:
return qc