您的位置:首页 > 其它

2017.4.26 组合数问题 思考记录

2017-04-26 19:05 369 查看
        这个题和其他前缀和的题相比实在太直白了、

       然而考场上并不会二维前缀和、、、、

         

       注意判断的时候要加上j<i就行了、

码:

#include<iostream>
#include<cstdio>
using namespace std;
int f[2009][2009],hang[2009],T,i,k,sum[2009][2009],j,n,m;
int main()
{
scanf("%d%d",&T,&k);
f[0][0]=1;

for(i=1;i<=2000;i++)
{
hang[0]=0;
f[i][0]=1;
for(j=1;j<=2000;j++)
{
f[i][j]=(f[i-1][j]+f[i-1][j-1])%k;
if(!f[i][j]&&j<=i)hang[j]=hang[j-1]+1;
else hang[j]=hang[j-1];
// f[i][j]%=k;

//hang[j]=hang[j-1]+f[i][j];
sum[i][j]=sum[i-1][j]+hang[j]; //printf("%d %d %d\n",i,j,sum[i][j]);
}
}

for(i=1;i<=T;i++)
{
scanf("%d%d",&n,&m);
printf("%d\n",sum
[m]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: