B2: Controlled Phase Shift

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

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

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

0k<2n0 \leq k < 2^n0c10 \leq c \leq 1 を満たす任意の整数の組 (k,c)(k,c) に対して

knc1Oexp(2πicak2n)knc1\ket{k}_n \ket{c}_1 \xrightarrow{O} \exp\left(\frac{2\pi i c a k}{2^n}\right) \ket{k}_n \ket{c}_1

制約

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

ヒント

開く
  • まずは cc を除いた次のオラクルを考えてみましょう。
knOexp(2πiak2n)kn\ket{k}_n \xrightarrow{O} \exp\left(\frac{2\pi i a k}{2^n}\right) \ket{k}_n
  • 問題文のオラクルは「c=1c = 1 のときにのみ上のオラクルを適用する」と解釈することができます。
  • 類題:QCoder Programming Contest 002 - B5

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