$Luogu$

看这题题解的时候看到一个好可爱的表情(●'◡'●)ノ♥

$Sol$

首先注意到这题的模数是$k$.然而$k$并不一定是质数,所以不能用$C_n^m=\frac{n!}{m!(n-m)!}$.

所以还要记得另外一个公式吖:$C_n^m=C_{n-1}^{m}+C_{n-1}^{m-1}$

于是可以预处理出所有的$C$,以及所有的前缀和.这样就可以$O(1)$查询了.

最后还要注意特判$m>n$的情况

$over$

$Code$

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define yes(i,a,b) for(Rg int i=a;i>=b;--i)
#define mem(a,b) memset(a,b,sizeof(a))
#define ll long long
#define db double
#define inf 2147483647
using namespace std;
il int read()
{
Rg int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
const int N=;
int T,k,n,m,c[N][N];
ll s[N][N];
il void init()
{
c[][]=;
go(i,,)c[i][]=;
go(i,,)
go(j,,i)
{
c[i][j]=(c[i-][j]+c[i-][j-])%k;
if(!c[i][j])s[i][j]=;
}
go(i,,)
{
go(j,,i)s[i][j]+=s[i-][j]+s[i][j-]-s[i-][j-];
s[i][i+]=s[i][i];
}
}
int main()
{
T=read();k=read();init();
while(T--)
{
n=read(),m=read();
if(m>n)m=n;
printf("%lld\n",s[n][m]);
}
return ;
}

最新文章

  1. HDU 5053 the Sum of Cube(简单数论)
  2. Android 7.0 UICC 分析(三)
  3. 基于NHibernate的开发框架的设计
  4. oracle中事务处理
  5. LeetCode题解——3Sum Closest
  6. 空间表SpaceList
  7. Eclipse中将hadoop项目放在集群中运行
  8. BZOJ 2882: 工艺 [后缀自动机+map]
  9. [BZOJ 5093]图的价值
  10. 中文分词实战——基于jieba动态加载字典和调整词频的电子病历分词
  11. Java中的方法(形参及实参)return返回类型
  12. git -分支管理(创建、推送、删除)
  13. Tecplot: Legend显示与否
  14. Oracle中把一张表查询结果插入到另一张表中
  15. docker安装testlink
  16. python调用c的方法
  17. MVC 学习(一)Linq to Entities 简单Demo
  18. android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)
  19. java中JVM的原理重温【转】
  20. 3504. [CQOI2014]危桥【最大流】

热门文章

  1. Python基础:25文件
  2. python实现以立春为起点n为周期任意日期所在的日期区间
  3. angular ui 路由传参
  4. hadoop2.6.0 + hbase-1.0.0 伪分布配置
  5. [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
  6. TensorFlow指定使用GPU 多块gpu
  7. POI 导入、导出Excel
  8. Codeforces Round #200 (Div. 1 + Div. 2)
  9. 【mac】关于mac的一些命令
  10. Eclipse文档注释导出doc