キュー問題解決組成精密数学+

それが書かれているので移動するので、鶏肉料理しない退廃ブログ偉大なオーストリアの手紙の将来の発展のためには、少し貢献をしました

タイトル説明

健康診断に参加するまでキューに入れる中学生男子学生N、M女子学生と教師2名があります。彼らは、一直線に並んだ、と法律の行がどのように行う多くの合計、その後、2人の教師が隣接することはできません、任意の隣接する2人の女子生徒することはできませんか?(注:任意の2人が異なっています)

入力形式

上記のように唯一のラインは、スペース二非負整数n及びmは、その意味によって分離されます。
データn≤10030%、m≤100用
データn≤2000の100%に、m≤2000

出力フォーマット

OUTPUT.TXT出力ファイルは、異なる方法の行数を表すだけ非負の整数を含んでいます。答えは重要であることに注意してください。

サンプル入力

1 1

サンプル出力

   12

题解:
这是一道组合数学,应该说是非常明显。
首先我们需要一个数奥生思路开始要正确。
我们选择固定男生和老师,然后将女生插空,貌似如果固定女生的式子会非常麻烦。我写到一半果断放弃了
固定男生时是A(n,n);
固定老师时分两种情况:
老师卡在一起,也就是老师一起站在两个男生中间,是A(2,2),这时需要一个女生站在老师中间,总式子变成A(n,n)*(n+1)*A(2,2)*A(n+2,m-1),m-1在上面。
或者老师没有卡在一起,是A(n+1,2),然后女生插空,总式子变成A(n,n)*A(n+1,2)*A(n+3,m).
合并式子,最终是n!*(2*m+n*(n+3))*(n+1)*(n+2)!/(n-m+3)!。
1の#include <iostreamの>
 2の#include <cstdioを>
 3の#include <CStringの>
 4  の#define MAXN 100010
 5  使って 名前空間STD。
6  INTのN、M、[MAXN]、B [MAXN]、[MAXN] C。
7  ボイド(MULT INT []、int型B)
 8  {
 9      整数 X = 0 10      のためにint型 I = 1 ; I <= A [ 0 ]; iが++ 11      {
 12          INT TMP = A [I] * B + X。
13         [I]は、TMPの%= 10 14          X = TMP / 10 15      }
 16      ながら(X)
 17      {
 18          [++ [ 0 ] = X%10 19          X / = 10 20      }
 21  }
 22  
23  のint main()の
 24  {
 25      のscanf(" %d個の%のD "、&​​N、&M); [ 0 ] = [ 1 ] = 1 26      のためのint型i = 1 ; iは= <N; iは++ )MULT(I)。
27      MULT((2 * Mの+ N *(N + 3 )))。
28      MULT(N + 1 )。
29      のためには、int型 iは= N-M + 4 ; iは= N + < 2 I ++; MULT(I))。
30      のためには、int型 iは[= 0 ; iは>] 0のprintf(; i--)" %dは" 、[I])。
31      リターン 0 ;
32 }
コード
大概就是这样。
 

おすすめ

転載: www.cnblogs.com/MouDing/p/11121426.html
おすすめ