問題文
整数 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≤x<2n を満たす任意の整数 x に対して
∣x⟩n∣0⟩mO∣x⟩n∣f(x) mod 2m⟩m
を満たす n+m 量子ビットオラクル O を実装せよ。
制約
- 1≤n,m≤9
- n+m≤10
- 0≤Sk<2m
- 量子回路の 深さ は 50 を超えてはならない。
- 整数はリトルエンディアンにしたがってエンコードすること (例:∣100⟩=1=∣001⟩)
- グローバル位相 は問わない。
- 提出されるコードは次のフォーマットにしたがうこと