HDU-6672-配列

トピックポータル

PS:要求項目番号nに典型的には、このような列、nは、特に大きいです。高速電力行列、または変換再帰のどちらか。しかし、この問題は、特に100000データセットなので、高速電力行列がタイムアウトしているかもしれませんが、私は起動していない場合でも。再帰的な変換は強力な数学的背景を必要とし、私は変換できません。ε=( 'ο `*)) )残念ながら、唯一の法律を見つけるためにテーブルをヒットします。

  • テーブルコードを再生します
    #include " ビット/ STDC ++ H。" 
    使用 名前空間STDを、
    CONST  INT MAXN = 110 INT [MAXN]。
    INT )(メイン{ 
        [ 1 ] = 1 int型の合計= 0 ;
        以下のためにint型 I = 2 ; iは= < 100 ; iは++ ){ 
            合計 + = [I - 1 ] *(I - 1 )。
            A [i]は =和%I。
        } 
        のためにint型のI =1 ; 私は= < 100 ; I ++ 
            のprintf(" %D%D \ n " 、I、[I])。
        リターン 0 ; 
    }

     

ゾル:で見出さ演奏テーブル上記コードの後に[I] = I - 1、又は[I] * 2 = iがしばしばであり、[I] =私のリスト- 1.発見満足I%6 = 4下部は、[I] * 2 =私はここで、i%6 = 0または%6 = 2 I満たされています。実際には、この時間は、定期的に、次は全てのi%6 = 1、I%置くべき6のセットのカラム数を推測することができました= 6%を、5例は、法律のどの残りのリストを見つけることができましたそして、私は見ていたが、これらの3つのケースが一緒に入れ。私%2 == 1。原因の法律を遵守することは困難と多くの時間を費やしました。

  • 法則
    #include " ビット/ STDC ++ H。" 
    使用 名前空間STDを、
    typedefの長い 長いLL。
    INT メイン(){ 
        LLのT、N。
        scanf関数(" %のLLD "、&T)。
        一方、(t-- ){ 
            scanf関数(" %のLLD "、&N)
            スイッチ(N%6 ){
                 ケース 0:のprintf(" %LLDする\ n "、N / 2)。破ります;
                ケース 1:のprintf(" %LLDする\ n "、N / 6 * 4 + 1)。破ります;
                ケース 2:のprintf(" %LLDする\ n "、N / 2)。破ります;
                ケース 3:のprintf(" %LLDする\ n "、N / 6)。破ります;
                ケース 4:のprintf(" %LLDする\ n "、N - 1)。破ります;
                ケース 5:のprintf(" %LLDする\ n "、N / 6)。破ります; 
            } 
        } 
        戻り 0 
    }

    私はブログを書いていない時は、良いブラシの疑いがない、ありました。Baiduはスターがそれを維持乗り始めました。

おすすめ

転載: www.cnblogs.com/Angel-Demon/p/11371828.html