C3: Modular Arithmetic II

実行時間制限:3 秒

メモリ制限:512 MiB

配点:300点

問題文

整数 nn, aa, LL が入力として与えられる。

次の条件を満たすオラクル OO を、2n+12n + 1 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

0x<L0 \leq x < L0y<L0 \leq y < L を満たす任意の整数の組 (x,y)(x, y) に対して

xnyn+1Oxn(y+ax) mod Ln+1\ket{x}_{n} \ket{y}_{n+1} \xrightarrow{O} \ket{x}_n \ket{(y + ax)\ \text{mod} \ L}_{n+1}

制約

  • 1n51 \leq n \leq 5
  • 0a<L2n0 \leq a < L \leq 2^n
  • グローバル位相 は問わない。
  • 整数は リトルエンディアン にしたがってエンコードすること
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit, QuantumRegister
 
 
def solve(n: int, a: int, L: int) -> QuantumCircuit:
    x, y = QuantumRegister(n), QuantumRegister(n + 1)
    qc = QuantumCircuit(x, y)
    # Write your code here:
 
    return qc

ヒント

開く
  • B5 の回路をうまく利用できないか考えてみましょう。
  • まずは 0k<L0 \leq k < L0c10 \leq c \leq 1 を満たす任意の整数の組 (k,c)(k, c) に対して、次のオラクルを考えてみましょう。
c1kn+1Oc1(k+ca) mod Ln+1\ket{c}_1 \ket{k}_{n+1} \xrightarrow{O} \ket{c}_1 \ket{(k + ca)\ \text{mod} \ L}_{n+1}

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