BZOJ4403 序列統計

2021-08-09 19:04:14 字數 1057 閱讀 1504

標籤:lucas定理,逆元

description

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

input

輸入第一行包含乙個整數t,表示資料組數。

第2到第t+1行每行包含三個整數n、l和r,n、l和r的意義如題所述。

1≤n,l,r≤10^9,1≤t≤100,輸入資料保證l≤r。

output

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

sample input2

1 4 5

2 4 5

sample output2

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

分析:設m=r-l+1,所以長度為i,元素大小在1àm中單調不下降子串行數量為c(i+m-1,m-1)

sum=c(n+m,m)-1

然後用lucas定理和逆元計算c

code

#include#include#include#include#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)

#define dep(i,a,b) for(int i=a;i>=b;i--)

#define mem(x,num) memset(x,num,sizeof x)

#define ll long long

using namespace std;

inline ll read()

while(ch>='0'&&ch<='9')

return x*f;

}const ll mod=1e6+3;

ll fac[mod],inv[mod];

void work()

ll c(ll n,ll m)

{ if(n

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 序列統計

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