This commit is contained in:
Zengtudor 2024-10-08 19:31:14 +08:00
parent 49bdd569a7
commit 84d0f094d8

View File

@ -0,0 +1,34 @@
#include <iostream>
#include <algorithm>
using ull = unsigned long long;
static constexpr size_t max_n {(size_t)2e3+5};
ull k, c[max_n][max_n], prefix[max_n][max_n], t, n, m;
static void init(){
c[0][0] = c[1][0] = c[1][1] = 1;
for(ull i {2};i<max_n;i++){
c[i][0]=1;
for(ull j{1};j<max_n;j++){
c[i][j] = (c[i-1][j-1] + c[i-1][j])%k;
}
}
for(ull i {2};i<max_n;i++){
for(ull j{1};j<=i;j++){
prefix[i][j] = prefix[i-1][j]+prefix[i][j-1]-prefix[i-1][j-1] + (c[i][j]==0?1:0);
}
prefix[i][i+1] = prefix[i][i];
}
}
int main(){
std::cin>>t>>k;
init();
for(ull i {0};i<t;i++){
std::cin>>n>>m;
m = std::min(m,n);
std::cout<<(prefix[n][m])<<'\n';
}
}