説明
合計は、例えば、整数及び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 。 }