B7: Quantum Arithmetic III

Time Limit: 3 sec

Memory Limit: 512 MiB

Score: 200

Problem Statement

You are given integers n, m, S0, S1, , Sn1n,\ m,\ S_0,\ S_1,\ \cdots,\ S_{n-1}.

For an integer x=x0+21x1+2n1xn1x = x_0 + 2^1 x_1 + \cdots 2^{n-1}x_{n-1} (xi{0,1})\left(x_i \in \{0, 1\}\right) where 0x<2n0 \leq x < 2^n, define the function f(x)f(x) by

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

Implement the (n+m)(n + m)-qubit oracle OO acting on computational basis states as

xnymOxn(y+f(x))(mod 2m)m\begin{equation} \ket{x}_{n}\ket{y}_{m} \xrightarrow{O} \ket{x}_{n}\ket{(y + f(x)) (\mathrm{mod}\ 2^m)}_{m} \nonumber \end{equation}

for any pair of integers (x, y)(x,\ y) such that 0x<2n0 \leq x < 2^n and 0y<2m0 \leq y < 2^m.

Constraints

  • 1n,m91 \leq n, m \leq 9
  • n+m10n + m \leq 10
  • 0Sk<2m0 \leq S_k < 2^m
  • The circuit depth must not exceed 5050.
  • Integers must be encoded by little-endian notation, i.e., 100=1001\ket{100} = 1 \neq \ket{001}.
  • Global phase is ignored in judge.
  • The submitted code must follow the specified format:
from qiskit import QuantumCircuit, QuantumRegister
 
 
def solve(n: int, m: int, S: list[int]) -> QuantumCircuit:
    x, y = QuantumRegister(n), QuantumRegister(m)
    qc = QuantumCircuit(x, y)
    # Write your code here:
 
    return qc

Please sign in to submit your answer.