bzoj4403 序列統計

2022-05-02 05:42:07 字數 1187 閱讀 7673

給定三個正整數n、l和r,統計長度在1到n之間,元素大小都在l到r之間的單調不降序列的數量。輸出答案對10^6+3取模的結果。

輸入第一行包含乙個整數t,表示資料組數。第2到第t+1行每行包含三個整數n、l和r,n、l和r的意義如題所述。

輸出包含t行,每行有乙個數字,表示你所求出的答案對106+3取模的結果。

21 4 52 4 5

25提示

【樣例說明】滿足條件的2個序列為[4]和[5]。

【資料規模和約定】對於100%的資料,1≤n,l,r≤10^9,1≤t≤100,輸入資料保證l≤r。

正解:組合數學+$lucas$定理。

設$m=r-l+1$,打表後可發現$ans=c_^-1$。

然後用盧卡斯定理:$lucas_^=c_^*lucas_^$。

要預處理$[0,p-1]$的階乘和逆元,逆元的線性求法:$inv_=-(p/i)*inv_$。

1

//it is made by wfj_2048~

2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include

14#define rhl (1000003ll)

15#define n (1000010)

16#define il inline

17#define rg register

18#define ll long long

19#define file(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)

2021

using

namespace

std;

2223

ll fac[n],inv[n],n,m,l,r;

2425

il ll cm(rg ll n,rg ll m)

2930

il ll lucas(rg ll n,rg ll m)

3435 il void

pre()

41return;42

}4344 il void

work()

4849

intmain()

BZOJ4403 序列統計

description 給定三個正整數n l和r,統計長度在1到n之間,元素大小都在l到r之間的單調不降序列的數量。輸出答案對10 6 3取模的結果。input 輸入第一行包含乙個整數t,表示資料組數。第2到第t 1行每行包含三個整數n l和r,n l和r的意義如題所述。output 輸出包含t行,...

BZOJ4403 序列統計

推導式子 baidu可得 設m r l 1 長度為i,元素大小在1 m之間的單調不降序列的數量有cm 1i m 1個 故答案為 n i 1 cm 1 i m 1 ni 1 cm 1i m 1 cm m 1 ni 2 cm 1i m 1 cm m 1 1 ni 3 cm 1i m 1 cm m 2 1...

BZOJ4403 序列統計

標籤 lucas定理,逆元 description 給定三個正整數n l和r,統計長度在1到n之間,元素大小都在l到r之間的單調不降序列的數量。輸出答案對10 6 3取模的結果。input 輸入第一行包含乙個整數t,表示資料組數。第2到第t 1行每行包含三個整數n l和r,n l和r的意義如題所述。...