$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇Microsoft Q# Coding Contest - Winter 2019 D1 - Block diagonal matrix◇◇


☆問題URL

https://codeforces.com/contest/1116/problem/D1

☆問題の概要

$N$桁の量子状態に対して、主対角線上に$2\times2$のブロックを並べたようなパターンで表されるユニタリ演算を定義せよ。

例として、$N=3$のとき $$\left( \begin{array}{rr} X & X & . & . & . & . & . & . \\ X & X & . & . & . & . & . & . \\ . & . & X & X & . & . & . & . \\ . & . & X & X & . & . & . & . \\ . & . & . & . & X & X & . & . \\ . & . & . & . & X & X & . & . \\ . & . & . & . & . & . & X & X \\ . & . & . & . & . & . & X & X \end{array} \right)$$ の形で表される演算であり、'.'は絶対値の二乗が$10^{-5}$以下の複素数、'$X$'は絶対値の二乗が$10^{-5}$よりも大きい複素数を表す。また、基底状態の順番にはリトル・エンディアンを採用する。

☆解法

Winter 2019 Warmup U2と似た問題で、同問題より $$I_1\otimes H_0= \left( \begin{array}{rr} H & O\\ O & H \end{array} \right) = \left( \begin{array}{rr} X & X & . & . \\ X & X & . & . \\ . & . & X & X \\ . & . & X & X \end{array} \right)$$ であり、これは本問題の$N=2$の場合になっています。同様に、その他のqubitに恒等演算子を作用させる(つまり、何もしない)ことで、線形写像の直積の性質より、$N$桁の場合についても正しくできていることがわかります。

これで、この問題が解けました。

☆ソースコード

                
namespace Solution {
    open Microsoft.Quantum.Primitive;
    open Microsoft.Quantum.Canon;

    operation Solve (qs : Qubit[]) : Unit {
        H(qs[0]);
    }
}
                
            

戻る