bzoj 4403 序列統計

2022-09-14 19:18:15 字數 1139 閱讀 7548

bzoj 4403: 序列統計

time limit: 3 sec  memory limit: 128 mb

submit: 1062  solved: 497

[submit][status][discuss]

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

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

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

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

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

21 4 5

2 4 525

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

很簡單的組合數學題。

首先發現元素大小並沒有什麼卵用,只需要知道可選數的種類即可。

單調不降就相當於把排列變成組合(組合的含義就是單調不降排列數量)。

設len=r-l+1,那麼答案就是c(len,1)+c(len+1,2)+...+c(len+n-1,n)。(有可重複元素的組合)

化簡一下,把上式+c(len,0)再-c(len,0),可得:

ans=c(len+n,n)-1。

發現mod才是10^6級別的,所以把階乘和逆元處理出來之後再寫個盧卡斯就可以了

(而且這個盧卡斯最多隻會跑兩層)。

#include#define ll long long

#define ha 1000003

#define maxn 1000005

using

namespace

std;

ll jc[maxn],ni[maxn];

ll t,l,r,n,len;

inline ll ksm(ll x,ll y)

inline

void

init()

inline ll c(ll x,ll y)

inline ll lucas(ll x,ll y)

return

ans;

}int

main()

return0;

}

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的意義如題所述。...