HDU 1250 Hatのフィボナッチ(再帰、多数の追加、文字列)

Hatのフィボナッチ

制限時間:1000分の2000 MS(Javaの/その他)メモリの制限:32768分の65536 K(Javaの/その他)
の合計提出(S):14776受理提出(S):4923

 

問題の説明

 

フィボナッチ数列は、まず二つの部材の両方をされた状態で、前の二つのメンバーの配列を加算することにより算出される
F(1)= 1、F(2)= 1、F(3)= 1、F(4)= 1 、F(N> 4)= F(N - 1)+ F(N-2)+ F(N-3)+ F(N-4)
あなたの仕事は、入力として数、及びプリントを取ることであるフィボナッチ数。

 


入力

 

各行は、整数が含まれます。プロセスはファイルの最後に。

 


出力

 

各場合について、出力ラインにおける結果。

 


サンプル入力

100

サンプル出力

4203968145672990846840663646 


注:
ノー生成されたフィボナッチ数の過剰2005年の数字になります、テストデータすなわち。F(20)= 66526を有する5桁。

 

問題の分析と効果

大きな数字を扱うときにフィボナッチの変異体である、...明日私は、文字列のバグは、長い時間のためにつまずくされた使用される文字列を学ぶことがたくさん追加

#include <ビット/ STDC ++ H> 使用して名前空間STDを、int型nは、I。
文字列 bigadd(文字列文字列B)
{ int型ジン= 0 、I。
    文字AI、BI;
    文字列 ANSS = A;
    INTレナ= a.size()。
    INT LENB = b.size()。
    int型 lenmax = MAX(レナ、LENB)。
    int型のp = lena- 1 INT Q = lenb- 1 以下のための(I = lenmax- 1 ; I> = 0 ; i--

 


    
    { 
        場合(P < 0 
        V = ' 0 ' レザー
        及び = [P]。
        もし(Q < 0 
        BI =の' 0 ' 
        BI =のB [Q]。
        ANSS [I] =((錆' 0 ' +二' 0 ' +ジン)%10)+ ' 0 ' 
        ジン =(錆' 0 '+二' 0 ' +ジン)/ 10 
        P - ; 
        Q - ; 
    } 
    であれば(仁)
    { 
        チャー X =ジン+ ' 0 ' 
        ANSS = X + ANSS。
    } 
    戻りANSS。
} 
/ * 
INTメイン()
{ 
    (!のscanf( "%d個"、&N)= EOF)一方
    { 
        文字列A = "1"。
        列B = "1"; 
        列c = "1"; 
        列D = "1"; 
        (I = 5ため、iが<= N。 
        {
            bigadd = D(bigadd(A、B)、bigadd(C、D)); 
            A = B; 
            B = C、
            C = TEMP; 
        } 
        COUT << << << B C D << << ENDL; 
    } 
 } * / 
 int型のmain(){  
     文字列 [ 8008 ];     // 文字列4とI間違っ前及び長さに関連するようだ 
    [ 1 ] = " 1 " ;   
    [ 2 ] = " 1 " ;   
    [ 3 ] = " 1 " ;   
    [ 4 ] =" 1 " ;   
    以下のための(I = 5 ; iは< 8008 ; ++ I)   
           [I] = bigadd(bigadd(bigadd([I- 1 ]、[I- 2 ])、[I- 3 ])、[ I- 4 ])。  
    一方、(scanf関数(" %dの"!、&N)= EOF)
    { 
        COUT << [N] << ENDL。
    } 
    戻り 0 
}

 

 

おすすめ

転載: www.cnblogs.com/dyhaohaoxuexi/p/11330299.html