比赛 暑假综合模拟2 评测结果 AAAAAAAAAAAAAAAAATAT
题目名称 组合数问题 最终得分 90
用户昵称 Xiaokang_Zhao120 运行时间 4.612 s
代码语言 C++ 内存使用 24.69 MiB
提交时间 2018-08-05 17:19:16
显示代码纯文本
#include<iostream>
#include<cstdio>

using namespace std;
typedef long long ll;

ll t,k;
const ll MAXN = 2000;
ll C[MAXN+1][MAXN+1];
void Initial()
{
    ll i,j;
    for(i=0; i<=MAXN; ++i)
    {
        C[0][i] = 0;
        C[i][0] = 1;
    }
    for(i=1; i<=MAXN; ++i)
    {
        for(j=1; j<=MAXN; ++j)
        C[i][j] = (C[i-1][j] + C[i-1][j-1]) % k;
    }
}
int main()
{
	freopen("problem.in", "r", stdin);freopen("problem.out", "w", stdout);
	cin>>t>>k;Initial();
	while(t--)
	{
		ll n,m,ans=0;
		cin>>n>>m;
		for(ll i=0; i<=n; i++)
			for(ll j=0; j<=min(i, m); j++)
				if(C[i][j]%k==0)ans++;
		cout<<ans;
	}
	return 0;
}