B1: Action in the Fourier Basis

実行時間制限:3 秒

メモリ制限:512 MiB

配点:300点

問題文

nn を正の整数とする。非負整数 kk に対し、QFT(k)\mathrm{QFT}(k) を次式で定義する。

QFT(k)=12n0a<2nωaka\mathrm{QFT}(k) = \frac{1}{\sqrt{2^n}} \sum_{0 \leq a < 2^n} \omega^{ak} \ket{a}

ここで、ω\omega

ω=exp(2πi2n)\omega = \exp \left( {\frac{2 \pi i}{2^n}} \right)

とする。

整数 nn, kconstk_{\text{const}} が入力として与えられるので、次の条件を満たすオラクル OO を、nn 量子ビットをもつ量子回路 qc\mathrm{qc} 上に実装せよ。

0k<2n0 \leq k < 2^n を満たす任意の整数 kk に対して

QFT(k)OQFT(k)\mathrm{QFT}(k) \xrightarrow{O} \mathrm{QFT}(k')

ただし、0k<2n0 \leq k' < 2^{n} は以下の式を満たす必要がある。

ωk=ωkconstωk\omega^{k'} = \omega^{k_{\text{const}}} \omega^{k}

制約

  • 2n102 \leq n \leq 10
  • 0kconst<2n0 \leq k_{\text{const}} < 2^n
  • 量子回路の 深さ11 を超えてはならない。
  • 整数は リトルエンディアン にしたがってエンコードすること
  • グローバル位相 は問わない。
  • 提出されるコードは次のフォーマットにしたがうこと
from qiskit import QuantumCircuit
 
 
def solve(n: int, k_const: int) -> QuantumCircuit:
    qc = QuantumCircuit(n)
    # Write your code here:
 
    return qc

入力例

  • n=2n = 2: 実装された量子回路 qc\mathrm{qc} は次式を満たす。
14(0+ωk1+ω2k2+ω3k3)qc14(0+ωk1+ω2k2+ω3k3)\frac{1}{\sqrt{4}} \left( \ket{0} + \omega^{k} \ket{1} + \omega^{2k} \ket{2} + \omega^{3k} \ket{3} \right) \xrightarrow{\mathrm{qc}} \frac{1}{\sqrt{4}} \left( \ket{0} + \omega^{k'} \ket{1} + \omega^{2k'} \ket{2} + \omega^{3k'} \ket{3} \right)

ヒント

開く
  • aaa=a0+2a1++2n1an1a = a_0 + 2 a_1 + \cdots + 2^{n-1} a_{n-1} のように二進展開すると考えやすくなるかもしれません。
  • 類題:QCoder Programming Contest 002 - B5

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