問題文
整数 n, m, S0, S1, ⋯, Sn−1 が入力として与えられる。
0 以上 2n 未満の整数 x=x0+21x1+⋯2n−1xn−1 (xi∈{0,1}) に対して、関数 f(x) を次式で定義する。
f(x)=S0x0+S1x1+⋯+Sn−1xn−1
0 以上 2n 未満の任意の整数 x に対して
∣x⟩nOexp(2m2πif(x))∣x⟩n
を満たす n 量子ビットオラクル O を実装せよ。
制約
- 1≤n,m≤10
- 0≤Sk<2m
- 量子回路の 深さ は 10 を超えてはならない。
- 整数はリトルエンディアンにしたがってエンコードすること (例:∣100⟩=1=∣001⟩)
- グローバル位相 は問わない。
- 提出されるコードは次のフォーマットにしたがうこと
入力例
- n=2, m=2, S0=1, S1=3, ∣x⟩=∣11⟩=∣3⟩:
f(3)=1⋅1+3⋅1=4 より、実装された量子回路 qc は次式を満たす。
∣11⟩qcexp(222⋅4πi)∣11⟩