$$ \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 - Summer 2018 B1-Distinguish zero state and W state◇◇


☆問題URL

https://codeforces.com/contest/1002/problem/B1

☆問題の概要

$N$桁の量子状態が与えられる。この状態が

のどちらであるかを判定し、状態$\ket{0...0}$であれば0を、W状態であれば1を返せ。

☆解法

すべてのqubitに対してPauli Z演算子を対角とする測定をして、$\ket{1}$が見つかれば1を、そうでなければ0を返せばよいです。

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

☆ソースコード

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

    operation Solve (qs : Qubit[]) : Int
    {
        body
        {
            for(i in 0..Length(qs)-1){
                if(M(qs[i])!=Zero){
                    return 1;
                }
            }
            return 0;
        }
    }
}
                
            

戻る