SDNU 1204水の問題(水問題)

説明

合計は、例えば、整数及び2の累乗に分割することができます。
7 = 1 + 2 + 4
7 = 1 + 2 + 2 + 2
7 = 1 + 1 + 1 + 4
7 = 1 + 1 + 1 + 2 + 2
7 = 1 + 1 + 1 + 1 + 1 + 2
7 = 1 + 1 + 1 + 1 + 1 + 1 + 1
六つの異なる分割モードの全。
別の例は:4 = 4,4 + 1 = 1 + 1 = 2 + 1,4 + 2,4 + 1 + 1 = 2:4に分割することができます。
F(n)でn個の異なる分割の数を表し、例えば、F(7)= 6。
これは、プログラミング、読み出しN(無百万人以上)、出力F(N)%1000000000を必要とします。

入力

N(1 <= N <= 1000000):各入力は、整数を含みます。

出力

各試験のために、出力F(N)%1000000000。

サンプル入力

7

サンプル出力

6

ヒント

水の問題

ソース

道の
書式#include <cstdioを> 
する#include <iostreamの> 
の#include <cmath> 
の#include < 文字列 > 
の#include <CStringの> 
の#include <アルゴリズム> 
書式#include <キュー> 
の#include <ベクトル> 
の#include <マップ>
 使用して 名前空間はstd;
#defineが長い長いllのint型、N F [ 1000000 + 8 ]。INT メイン()
{ 
    [F 0 [] = F 1 ] = 1 以下のためのint型 I = 2



; 私は< 1000008を私は++ 
    { 
        場合(I%2)F [I] = F [I- 1 ]。
         F [I] =([I-F 1 ] + F [I / 2 ])%1000000000 
    } 
    ながら(〜のscanf(" %d個"、&​​N)&& N!= 0 
    { 
        のprintf(" %Dを\ n " 、F [N])。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/RootVount/p/10991032.html