Фазовый поворот по квантовой двоичной дроби
Входы — кубит в $|\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...
}
}