解説
本問では次の状態遷移を実現するオラクル を実装します。
遷移後の状態は次のように各量子ビットごとに独立に分解できます。
よって、各量子ビット に対して の位相シフトゲートを作用させることでこの問題を解くことができます。
の回路図を次に示します。

回路の深さは です。
解答例
解答例は以下の通りです。
import math
from qiskit import QuantumCircuit
def solve(n: int, m: int, S: list[int]) -> QuantumCircuit:
qc = QuantumCircuit(n)
for i in range(n):
theta = 2 * math.pi * S[i] / 2**m
qc.p(theta, i)
return qc