51 nod1067バッシュゲームV2(表を再生するには、SG機能)

1067バッシュゲームV2

 

石のN個の束の合計があります。AB 2人が、取得を交代します。あなただけの石が勝つために最後の人を持って、3、4つ星を取ることができます。ABの仮定は、プロセスは、石のミスになりません、非常に賢いです。最終的にはゲームに勝つ尋ねNを、与えられました。

例えば、N = 2。最後のものだけが、Bの石を得ることができ、1を取ることができます。

 

エントリー

行1:数T、番号が後の入力として使用されるテストの数を示します。(1 <= T <= 10000 ) 
数Nあたりの行1:T + 1行- 2 (1 <= N <= 10 ^ 9)

輸出

出力A、Bがあれば、出力Bを勝利した場合、総ラインT、Aが勝ちます 

SG機能は、第一法則を見つけ、その後、テーブルを打ちます。我々は7%==をN 0 || N%ことを見出し 7 == 2が0場合、SGです。
テーブルコードを再生します
#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineっ長い長
 のconst  int型 N = 100、M = 5E5 + 5 int型 V [N]、SG [N]、S [ 3 ] = { 134 }。
INT MEX(INT X)
{ 
    memsetの(V、0はsizeof (V))。
    以下のためにint型 i = 0 ; iは< 3 ; I ++ 
    { 
        場合(X < S [i])と
             ブレーク
        V [SG [X -s [I]]] = 1 
    } 
    のためのint型 I = 0 ;; iは++ 
    { 
        場合(!V [i])と
             リターンiが、
    } 
} 
int型のmain()
{ 
    int型私は、
    SG [ 0 ] = 0 ;
    以下のためにint型 i = 1 ; iがNを<; iは++ 
    { 
        SGの[I] = MEX(I)。
    } 
    のためにint型 i = 0 ; iがNを<; iは++ 
    {
        printf("SG [%のD] =%Dを\ n " 、I、SG [I]); 
    } 
    戻り 0 ; 
}

ACコード

#include <ビット/ STDC ++ H>
 使用して 名前空間STDを、
#defineっ長い長いint型のmain()
{ int型T、N、X。
    CIN >> T;
    一方、(T-- 
    { 
        CIN >> X。
        もし(xは%7 == 0 || X%7 == 2 
        { 
            のprintf(" Bに\ n " ); 
        } 
        { 
            のprintf(" の\ n " ); 
    }


    
        
        }
   リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/hh13579/p/11479898.html