數學排列好難 QAQ的問題

2021-07-10 07:36:44 字數 1236 閱讀 5844

問題 i: qaq的問題

時間限制: 1 sec  記憶體限制: 128 mb

提交: 11  解決: 3

[提交][狀態][討論版]

題目描述

有m個不同的陣地,每個陣地上可以留守任意個士兵(為非負數)。現在qaq有n個士兵,他需要選擇至少乙個陣地才可以獲得勝利。qaq的一貫原則——讓所有士兵留守在他選擇的陣地上。問有多少種安排方案使得qaq獲得勝利。為了降低難度,qaq在選擇的陣地上不留守士兵也是合法的。

方案數的不同判定只能依據下面三條:

(1)選擇的陣地數目不同

——選擇1個陣地和選擇2個陣地。

(2)選擇的陣地不同

——選擇陣地1、2和選擇陣地2、3。

(3)在選擇的陣地中任意兩個陣地留守士兵數目不同

——陣地1有a人、陣地2有b人;陣地1有c人、陣地2有d人。其中a != c || b != d 且a、b、c、d均為非負數。

舉個例子:有2個士兵和2個陣地,方案數為5。

(1)選擇1個陣地方案數為2 —— 選擇陣地1並留守2個士兵 或者 選擇陣地2並留守2個士兵。

(2)選擇2個陣地方案數為3 —— 在陣地1、2留守士兵人數為0 2、2 0、1 1。

這裡要注意:不能依據每個陣地的人數來判定(1)裡面的方案2 !0、!0 2和(2)的2 0、 0 2重複,因為前提選擇的陣地數目不同。

輸入有多組測試資料,請處理到檔案結束。

每組資料給定兩個整數n和m,分別表示士兵人數和陣地數目。1 <= n, m <= 50。

輸出每組資料輸出乙個整數表示不同的方案數。由於結果可能很大,你只需要輸出 % 777的結果。

解釋一下,如果最後結果為777,你只需要輸出777 % 777 = 0。

樣例輸入

2 246 37

1 1樣例輸出50

思路:迴圈選的陣地數k,1<=k<=m,從m中選k個,從k中選出t個(陣地中士兵不為0的)陣地,將n個士兵分到t個陣地中(c(n-1,t-1))。

公式:c ( n , k ) = c ( n - 1 , k - 1 ) + c ( n - 1 , k ) ;

**:

#include#include#includeusing namespace std; 

int n,m;

int c[60][60];

int a(int nn,int ii)

int main()

return 0;

}

QAQ的幸運數字 數學

time limit 1000ms memory limit 65536kb submit statistic problem description 金牌巨 qaq 經常靠漲人品 rising rp 來 a 題。他的幸運數字是 4 和 7,因此他也經常在第 4 發或第 7 發提交時過題 誤 一天,...

問題 穀神的賭博遊戲 數學思維 排列組合

neuq 的穀神要和我賭乙個遊戲 穀神要求我隨機在紙上寫出整數集合 n 是整數 的乙個排列 即不重複的隨機寫出從 1 到 3n 1 的所有整數 並且要求在我寫的過程中,從我寫的第乙個數開始一直加到我正在寫的數的總和不被 3 整除。如果我能寫出來符合要求的乙個排列,那麼我就贏得遊戲。那麼問題來了,我贏...

數學上的排列組合

下午一同事提出乙個有趣的問題 一行字母 數字符號也行 中間插入特定字元 字元型別不定,我這裡用加號 字母的順序不能變,如下 ab a b 1種 abc a bc ab c a b c 3種 abcd a bcd ab cd a b cd abc d a bc d ab c d a b c d 7種 ...