[HDU 1465]シリーズの一つは容易ではありません

私たちはしばしば、成功より失敗が簡単に、本当に確かに、容易ではない一つのことを行うには、感じ! 
あなたは常に成功したいと常に失敗することはありません場合は、「1」の事の成功は、まだそれは真実よりも簡単にお金を稼ぐためにお金を使うのが好き、いつものように、より困難であり、容易ではありません。 
言ったので、私はまだそれが容易ではないある程度失敗し、あなたを伝える必要があります。例えば、私が高校にいたとき、魔法少女、英語の試験があっても40間違ったすべての複数の選択肢!私たちは皆、これまでのところ、私は、これは素晴らしいことだと思う、確率論、知って生じなければならないような状況の確率を学びました。あなたは古典的なコメントを適用する場合、我々は要約することができます:間違った選択は難しいことではありません人々は、難易度が間違っている、すべて間違っています。 

残念ながら、そのような小さな確率イベントが開催されました、そして私たちの周りのすべては: 
それはある方法が--HDUは、ネットワーク名が無数の友達を作るために、8006で男子学生と呼ばれる持って、与えながら、最近のロマンスをプレイ学生ユーザーのn個の数は、それぞれの人は、彼はすべての文字が間違った封筒を設置されて置く必要があること、悪いことに、何もない手紙を書きました!注意、すべてが間違ったヨーヨーをインストールされています! 

質問は以下のようになります。それを可能に合計で、どのように多くの間違った方法を計算するために8006人の貧しい学生を助けてください?

複数のインスタンスを含むテスト入力データの入力複数、各テストケースのための1つの行は、各行は正の整数nを(1 <N <= 20)が含まれ、nはユーザ8006の数を表します。入力の各ラインの出力が可能な間違った方法の出力番号、職業ラインの各インスタンスの出力を要求しました。サンプル入力

2 
3

サンプル出力

1 
2

 

 

ソリューション:まだ小さなかわいいQAQの組み合わせ配置

#include <cstdioを> 
する#include <iostreamの> 
する#include <CStringの> 
する#include <cstdlib> 
の#include <アルゴリズム> 
の#include <cmath> 
のtypedef 長い LL。
使用して 名前空間はstdを、
INT [F 22 ]、N。
LL楽しい(int型N){
     場合(N == 1戻り 0 ;
    もし(N == 2リターン 1 リターン(N- 1)*(楽しい(N- 1)+楽しい(N- 2)); 
} 
int型のmain(){
     // freopenは( "a.in"、 "R"、STDIN)。
    // freopenは( "a.outの"、 "W"、STDOUT)。
    // F [1] = 0。F [2] = 1; F [3] = 2;
    // ため(= 4 Iにint型; I = 20 <; iは++)
         // F [I] =(I-1)*(F [I-1] + F [I-2])。
    しばらく(scanf関数(" %d個"、&​​n)を=!EOF)
          のprintf(" %LLDの\ nを" N、楽しいです());
    リターン 0 ; 
}

 

おすすめ

転載: www.cnblogs.com/wuhu-JJJ/p/11329119.html