A2: Controlled Gate I

実行時間制限:3 秒

メモリ制限:512 MiB

配点:200点

問題文

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

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

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

  • k=0k = 0 の場合
mknO12(0+(1)m1)kn\ket{m} \ket{k}_n \xrightarrow{O} \frac{1}{\sqrt{2}} (\ket{0} + (-1)^m \ket{1}) \ket{k}_n
  • k0k \neq 0 の場合
mknOmkn\ket{m} \ket{k}_n \xrightarrow{O} \ket{m} \ket{k}_n

制約

from qiskit import QuantumCircuit, QuantumRegister
 
 
def solve(n: int) -> QuantumCircuit:
    m, k = QuantumRegister(1), QuantumRegister(n)
    qc = QuantumCircuit(m, k)
    # Write your code here:
 
    return qc

ヒント

開く
  • 次のようにして、量子レジスタ kk に含まれるすべての量子ビットに何らかの量子ゲート gg を作用させることができます。
from qiskit import QuantumRegister
 
k = QuantumRegister(n)
qc.g(k)
  • 次のようにして、何らかの量子ゲート Gate\mathrm{Gate} の 複数制御ゲートを作用させることができます。
from qiskit.circuit.library import Gate
 
qc.append(Gate().control(n - 1), range(n))

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