№ 1758Квантовые вычисленияУровень 2

Фазовый поворот по квантовой двоичной дроби

Входы — кубит в $|\psi\rangle=\alpha|0\rangle+\beta|1\rangle$ и регистр j из $n$ кубитов в $|j_1\ldots j_n\rangle$.

Напишите операцию на языке Q#, заменяющую состояние первого кубита на $\alpha|0\rangle+\beta e^{2\pi i f}|1\rangle$ и сохраняющую базисное значение регистра j.

Двоичная дробь записывается со старшим разрядом первым:

$$f=0.j_1j_2\ldots j_n=\sum_{k=1}^{n}\frac{j_k}{2^k}.$$

Регистр j может находиться и в суперпозиции. Тогда действие определяется приведённым действием на базисные состояния и линейностью унитарной операции.

Заготовка Q#:

namespace Kata {
    operation BinaryFractionQuantum(q : Qubit, j : Qubit[]) : Unit is Adj + Ctl {
        // Implement your solution here...
     
    }
}