原题传送门
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int MOD = 19260817;
ll a[1005][1005];//a[down][up]
ll sum[1005][1005];
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
a[1][1] = a[1][0] = 1;//边界
for (int i = 2; i <= 1004; i++)
{
a[i][0] = 1;//边界
for (int j = 1; j <= i; j++)
{
a[i][j] = (a[i - 1][j - 1] + a[i - 1][j]) % MOD;//以后是统计和,%MOD
}
}
for (int i = 1; i <= 1004; i++)
{
for (int j = 1; j <= 1004; j++)
{
sum[i][j] = (sum[i - 1][j] + sum[i][j - 1] - sum[i - 1][j - 1] + a[i][j] + MOD) % MOD;//由于-sum[i-1][j-1]有可能出现负数,需加上MOD
}
}
int T;
cin >> T;
while (T--)
{
int up, down;
cin >> up >> down;
cout << sum[down][up] << endl;
}
}
前缀和,递推