$$ \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 B2-Distinguish GHZ state and W state◇◇


☆問題URL

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

☆問題の概要

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

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

☆解法

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

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

☆ソースコード

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

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

戻る