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