B5: Quantum Arithmetic I

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

整数 n, m, S0, S1, ⋯ , Sn−1n,\ m,\ S_0,\ S_1,\ \cdots,\ S_{n-1} が入力として与えられる。

00 以上 2n2^n 未満の整数 x=x0+21x1+⋯2n−1xn−1x = x_0 + 2^1 x_1 + \cdots 2^{n-1}x_{n-1} (xi∈{0,1})\left(x_i \in \{0, 1\}\right) に対して、関数 f(x)f(x) を次式で定義する。

f(x)=S0x0+S1x1+⋯+Sn−1xn−1\begin{equation} f(x) = S_0 x_0 + S_1 x_1 + \cdots + S_{n-1}x_{n-1} \nonumber \end{equation}

00 以上 2n2^n 未満の任意の整数 xx に対して

∣x⟩n→Oexp⁡(2πif(x)2m)∣x⟩n\begin{equation} \ket{x}_n \xrightarrow{O} \exp{\left(\frac{2\pi i f(x)}{2^m}\right)}\ket{x}_n \nonumber \end{equation}

を満たす nn 量子ビットオラクル OO を実装せよ。

制約

  • 1≤n,m≤101 \leq n, m \leq 10
  • 0≤Sk<2m0 \leq S_k < 2^m
  • 量子回路の 深さ は 1010 を超えてはならない。
  • 整数は リトルエンディアン にしたがってエンコードすること
  • グローバル位相 は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
 
def solve(n: int, m: int, S: list[int]) -> QuantumCircuit:
    qc = QuantumCircuit(n)
    # Write your code here:
 
    return qc

入力例

  • n=2, m=2, S0=1, S1=3, ∣x⟩=∣11⟩=∣3⟩n=2,\ m = 2,\ S_0 = 1,\ S_1 = 3,\ \ket{x} = \ket{11} = \ket{3}: f(3)=1⋅1+3⋅1=4f(3) = 1 \cdot 1 + 3 \cdot 1 = 4 より、実装された量子回路 qc\mathrm{qc} は次式を満たす。
∣11⟩→qcexp⁡(2⋅4πi22)∣11⟩\ket{11} \xrightarrow{\mathrm{qc}} \exp{\left(\frac{2 \cdot 4\pi i}{2^2}\right)}\ket{11}

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