P2822 组合数问题

求的是C(i,j)有多少个是k的倍数;

首先,求组合数是有技巧的,

用杨辉三角求组合数,爽的一批;

但是,这样只能得90分,两个点T了;

因为k是不变的,我们可以用前缀和的思想求出每个点的答案;

注意ans[i][i+1]=ans[i][i];因为下一个点是比上一个点多一个的;

为了不超过整数范围,我们可以%k;

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
int c[maxn][maxn];
int n,k;
int ans[maxn][maxn];
void build()
{
c[][]=;
c[][]=c[][]=;
for(int i=;i<=;i++)
{
c[i][]=;
for(int j=;j<=i;j++)
{
c[i][j]=c[i-][j]%k+c[i-][j-]%k;
ans[i][j]=ans[i-][j]+ans[i][j-]-ans[i-][j-];
if(c[i][j]%k==) ans[i][j]++;
}
ans[i][i+]=ans[i][i];
}
}
int T,m;
int x;
int main()
{ scanf("%d%d",&T,&k);
build();
while(T--)
{
scanf("%d%d",&n,&m);
x=min(n,m);
printf("%d\n",ans[n][x]);
}
return ;
}

最新文章

  1. 前台checkbox复选框提交到后台处理
  2. Error: Collection was modified; enumeration operation may not execute.
  3. Linux 下如何安装软件
  4. WindowsForm--Bubble User Control
  5. IsPostback的原理
  6. java之浮点数(笔记)
  7. 2016HUAS_ACM暑假集训2K - Hero(英雄)
  8. HTML表单样式
  9. AXURE制作APP抽屉式菜单
  10. oralce health monitor
  11. [置顶] vi、akw和sed总结
  12. const对象默认是static的,而不是extern的
  13. 马云收购UC你,至于到底是谁宣战
  14. C++ 头文件系列(queue)
  15. 深入理解 Linux 的 RCU 机制
  16. 51 nod 1227 平均最小公倍数
  17. jenkins入门系列之一 jenkins的安装
  18. Linux开局配置注意事项
  19. 查询树节点、oracle、select...start with...connect by prior...
  20. Vue相关开源项目库汇总(史上最全)

热门文章

  1. 伪静态 net-IIS伪静态配置,使用URLRewriter实现伪静态
  2. iOS - 外包开发常用第三方库(1)
  3. H5表单新特性
  4. PL/SQL Developer_如何快速获得表名或全部列名的文本形式
  5. FreeRTOS 任务创建和删除(动态)
  6. Android简单闹钟设置
  7. 系统API是原子操作吗?
  8. python-----opencv图像边界扩充
  9. 说说客户端访问一个链接URL的全过程
  10. selenium xpath定位方式整理