B7: Reflection Operator III

実行時間制限:3 秒

メモリ制限:512 MiB

配点:300点

問題文

整数 nn と実数 T0, T1, …, Tn−1T_0,\ T_1,\ \ldots,\ T_{n-1} が入力として与えられる。 次式の行列 AA で定義される操作を nn 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

A=2∣ψ⟩⟨ψ∣−IA = 2 \ket{\psi}\bra{\psi} - I

ただし、 II は 2n×2n2^n \times 2^n の単位行列とし、∣ψ⟩\ket{\psi} は次式で定義される。

∣ψ⟩=(cos⁡T0∣0⟩+sin⁡T0∣1⟩)(cos⁡T1∣0⟩+sin⁡T1∣1⟩)…(cos⁡Tn−1∣0⟩+sin⁡Tn−1∣1⟩)\ket{\psi} = (\cos T_0 \ket{0} + \sin T_0\ket{1}) (\cos T_1\ket{0} + \sin T_1\ket{1}) \ldots (\cos T_{n-1} \ket{0} + \sin T_{n-1} \ket{1})

制約

  • 2≤n≤102 \leq n \leq 10
  • −π<Ti≤π- \pi \lt T_i \leq \pi
  • グローバル位相 は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
 
def solve(n: int, T: list[float]) -> QuantumCircuit:
    qc = QuantumCircuit(n)
    # Write your code here:
 
    return qc

ヒント

開く
  • 次のようにして、量子ゲートの逆ゲートや量子回路の逆操作を行う量子回路を作用させることができます。
qc.compose(sub_qc().inverse(), inplace=True)
# def sub_qc() -> QuantumCircuit

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