帮你改了
数组越界了,还有就是递归的时候也越界了。
```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=3010,p=2333;
int t;
int n,k;
int C[N][N],f[N][N];
void init()
{
C[0][0]=f[0][0]=1;
for(int i=1;i<=3000;i++)
{
C[i][0]=C[i][i]=1;
for(int j=0;j<=i;j++)
C[i][j]=(C[i-1][j]+C[i-1][j-1])%p;
}
for(int i=0;i<=3000;i++)f[i][0]=1;
for(int i=0;i<=3000;i++)
for(int j=1;j<=3000;j++)
f[i][j]=(f[i][j-1]+C[i][j])%p;
}
int lucas(int a,int b)
{
if(a<p&&b<p)return C[a][b];
return C[a%p][b%p]*lucas(a/p,b/p)%p;
}
int get_ans(int n,int k)
{
if(n==0||k==0)return 1;
if(n<p&&k<p)return f[n][k]%p;
return (f[n%p][p-1]*get_ans(n/p, k/p-1)%p+lucas(n/p,k/p)*f[n%p][k%p]%p+p)%p;
}
signed main()
{
init();
cin>>t;
while(t--)
{
cin>>n>>k;
cout<<(get_ans(n,k)+p)%p<<endl;
}
return 0;
}
```
by crimson000 @ 2023-06-17 15:04:55
@[crimson000](/user/755337) 谢谢捏
by infinite2021 @ 2023-06-27 08:10:46