問題の説明
ナショナルデー、ちょうど壮大な質量の結婚式を開催州都のHZ中は、儀式のいくつかの一時的なマスターを作るための豊富なの結婚式は、「テスト新郎」と呼ばれる興味深いプログラム、を打ち出している次のように、具体的な操作は次のとおりです。
まず、すべての花嫁にほぼ正確に同じ服を着て、行の大きな赤いスカーフランダム座っに覆われ、
その後、あなたは彼の花嫁を探して新郎てみましょうだけの人を見つけることが許可され、人々が..見つけることはできません
最後に、UNCOVERをヒジャーブは、間違ったオブジェクトが公にひざまずく洗濯板だろう...場合
には、新郎を行うようだ簡単なことではありません...
Mの新郎新婦がありその新婚夫婦のN組の合計が、それは間違ってましたと仮定して、それが起こる見つけますどのように多くの場合可能合計。
まず、すべての花嫁にほぼ正確に同じ服を着て、行の大きな赤いスカーフランダム座っに覆われ、
その後、あなたは彼の花嫁を探して新郎てみましょうだけの人を見つけることが許可され、人々が..見つけることはできません
最後に、UNCOVERをヒジャーブは、間違ったオブジェクトが公にひざまずく洗濯板だろう...場合
には、新郎を行うようだ簡単なことではありません...
Mの新郎新婦がありその新婚夫婦のN組の合計が、それは間違ってましたと仮定して、それが起こる見つけますどのように多くの場合可能合計。
入力
入力データCの最初の行は、整数であるテストケースの数を示し、次いでC線データは、各ラインは、N及びM(1 <M <= N <= 20)は、2つの整数を含みます。
出力
各テストケースのために、ください出力種の数は、行ごとに各インスタンスの総出力を発生することができます。
サンプル入力
2 2 2 3 2
サンプル出力
1 3
著者
LCY
ソース
推薦します
この問題は、すべて間違ってから進化はN Mが間違った番号を持ってなるHDoj2048、全体としてMがDPにすべて間違っ等価[M]と等価である、分析から得ることができるされています残りのNMは、互いに権利を見つけるされ、その後、完全な配列NMのDP [M]は結果を得るために乗算されます。
C言語のコードを次のように:
書式#include <stdio.hに> 長い長い NJ(int型); INT のmain() { int型 NUM = 0 。 int型N、M。 長い長い DP [ 100 ]。 DP [ 2 ] = 1 ; DP [ 3 ] = 2 ; scanf関数(" %のD "、&NUM)。 一方、(num-- ) { scanf関数(" %D%D "、&N、&M)。 長い長いです CNM = NJ(N)/(NJ(M)* NJ(NM))。 // 求C(N、M)。 以下のために(INT iが= 4 ; I <= M; I ++ ) DP [I] =(DP [I- 1 ] *(I- 1)+ DP [I- 2 ] *(I- 1 ))。 printf(" %のLLD \ n "、DP [M] * CNM)。 } } 長い 長い NJ(INT X) // 求X的阶乘 { 長い 長い XJ = 1 。 以下のために(INT iが= 1 ; I <= X; I ++) XJ * = I; リターンXJ。 }