西安インビテーショナル-L(法律を見つけるためにテーブルをプレイ)

トピックリンクします。https://nanti.jisuanke.com/t/39279

二つの動作の定義と、n個の異なるシーケンス番号が与えられる:問題の意味前半と後半交換(かかわらず、中間の奇数がある場合)。2.各Exchange前にそれでもビットと数(奇数、最後の問題がある場合)。これら二つの動作によりQ.、異なる配列の数を得ることができます。

アイデア:質問の法則を見つけるための典型的な演奏テーブルには、次のゲーム学習します。テーブルに次のコードを打ちます:

書式#include <cstdioを>
 使用して 名前空間はstdを、

INT [ 10005 ] B [ 10005 ]。
int型のn年。

ブールチェック(){
     ブールフラグ= 1 以下のためにint型 i = 1 ; iは= N <; ++ I)の
         場合([I] =!B [I]){
            フラグ = 0 破ります;
        }
    リターンフラグ。
}

INT メイン(){
     ため(N = 1、N <= 30 ; ++ N){
         int型 HF = N / 2 
        ANS = 0 ;
        以下のためにint型 i = 1 ; iは= N <; ++ I)
            [I] = I、[I] B = I。
        ながら、1 ){
             ためint型 I = 1 ; I <= HF; ++ I){
                 int型 TMP = B [i]は、
                B [i]は = bの[N-HF + I]。
                B [N = I + -hf] TMPを、
            }
            もし(チェック())ブレーク++ ANS;
            以下のためにint型 I = 1 ; I <= N- 1、I + = 2 ){
                 int型 TMP = B [i]は、
                B [i]は = bの[I + 1 ]。
                B [I + 1 ] = TMPと、
            }
            もし(チェック())ブレーク++ ANS;
        }
        printf(" %のD:%Dを\ n "、N、ANS + 1 )。
    }
    リターン 0 ;
}
コードの表示

そして、あなたは法律を見つけることができます。

N%4 == 0:4歳=

N%4 == 1:IF(N == 1)ANS = 1

     プレゼンスANS = 2 * N

%4 == 2年N = N

N%4 == 3:IF(N == 3)ANS = 6

     存在ANS = 12

ACコード:

書式#include <cstdioを>
 使用して 名前空間はstdを、

INT [ 10005 ] B [ 10005 ]。
int型のn年。

ブールチェック(){
     ブールフラグ= 1 以下のためにint型 i = 1 ; iは= N <; ++ I)の
         場合([I] =!B [I]){
            フラグ = 0 破ります;
        }
    リターンフラグ。
}

INT メイン(){
     ため(N = 1、N <= 30 ; ++ N){
         int型 HF = N / 2 
        ANS = 0 ;
        以下のためにint型 i = 1 ; iは= N <; ++ I)
            [I] = I、[I] B = I。
        ながら、1 ){
             ためint型 I = 1 ; I <= HF; ++ I){
                 int型 TMP = B [i]は、
                B [i]は = bの[N-HF + I]。
                B [N = I + -hf] TMPを、
            }
            もし(チェック())ブレーク++ ANS;
            以下のためにint型 I = 1 ; I <= N- 1、I + = 2 ){
                 int型 TMP = B [i]は、
                B [i]は = bの[I + 1 ]。
                B [I + 1 ] = TMPと、
            }
            もし(チェック())ブレーク++ ANS;
        }
        printf(" %のD:%Dを\ n "、N、ANS + 1 )。
    }
    リターン 0 ;
}

 

おすすめ

転載: www.cnblogs.com/FrankChen831X/p/10927161.html