題目連線
給定n個0和n個1,它們將按照某種順序排成長度為2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0的個數都不少於1的個數的序列有多少個。
輸出的答案對1e9+7取模。
輸入格式
共一行,包含整數n。
輸出格式
共一行,包含乙個整數,表示答案。
資料範圍
1≤n≤1e5
輸入樣例:
3輸出樣例:
5
分析:這道題題意較為容易理解,計算滿足任意字首0的次數不小於1的序列個數,將這個問題轉化為組合數問題就是在2n步驟中選擇滿足條件的n步來計算數量,那麼總的序列個數就是c2n
nc_^
c2nn。
再找出滿足條件的序列次數,這裡用到了卡特蘭數
分析問題,以n=6
n=6n=
6 為例,則總的方案數可以看作從(0,0)點到(6,6)的路徑數,0為向右走,1為向上走。
滿足條件的路徑數為不經過紅顏色邊
任何經過紅顏色邊的路徑,對紅線的軸對稱可以走到(5,7)這個點,反過來,任何到達(5,7)的路徑都對應一條不滿足條件(字首序列中0的個數都不少於1的個數)的路徑。
因此,這道題的結果就可以寫成(c2
nn−c
2nn−
1)%m
od=c
2nnn
+1%m
od(c_^-c_^)\%mod=\frac^}\%mod
(c2nn
−c2n
n−1
)%mo
d=n+
1c2n
n%
mod,除法運算可以用逆元來轉化成乘法運算。
**如下:
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int mod=
1e9+7;
intqmi
(int a,
int b)
return res;
}intc(
int a,
int b)
return res;
}int
main()
演算法題 滿足條件的01序列(Python)
給定n個0和n個1,它們將按照某種順序排成長度為2n的序列,求它們能排列成的所有序列中,能夠滿足任意字首序列中0的個數都不少於1的個數的序列有多少個。輸出的答案對10 9 7取模。輸入格式 共一行,包含整數n。輸出格式 共一行,包含乙個整數,表示答案。資料範圍 1 n 10 5 輸入樣例 3輸出樣例...
滿足條件的正整數序列
問題描述 小明想知道,滿足以下條件的正整數序列的數量 第一項為 n 第二項不超過 n 從第三項開始,每一項小於前兩項的差的絕對值。請計算,對於給定的 n,有多少種滿足條件的序列。輸入格式 每一行包含乙個整數n。輸出格式 輸出乙個整數,表示答案。答案可能很大,請輸出答案除以10000的餘數。樣例輸入 ...
Python補充01 序列的方法
在快速教程中,我們了解了最基本的序列 sequence 回憶一下,序列包含有定值表 tuple 和表 list 此外,字串 string 是一種特殊的定值表。表的元素可以更改,定值表一旦建立,其元素不可更改。任何的序列都可以引用其中的元素 item s為乙個序列 len s 返回 序列中包含元素的個...