B2: Controlled Phase Shift

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

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

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

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

∣k⟩n∣c⟩1→Oexp⁡(2πicak2n)∣k⟩n∣c⟩1\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

制約

  • 1≤n≤101 \leq n \leq 10
  • 1≤a≤101 \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 を除いた次のオラクルを考えてみましょう。
∣k⟩n→Oexp⁡(2πiak2n)∣k⟩n\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

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