$Noip2016/Luogu2822$ 组合数问题
2024-09-03 11:05:49
看这题题解的时候看到一个好可爱的表情(●'◡'●)ノ♥
$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 ;
}
最新文章
- HDU 5053 the Sum of Cube(简单数论)
- Android 7.0 UICC 分析(三)
- 基于NHibernate的开发框架的设计
- oracle中事务处理
- LeetCode题解——3Sum Closest
- 空间表SpaceList
- Eclipse中将hadoop项目放在集群中运行
- BZOJ 2882: 工艺 [后缀自动机+map]
- [BZOJ 5093]图的价值
- 中文分词实战——基于jieba动态加载字典和调整词频的电子病历分词
- Java中的方法(形参及实参)return返回类型
- git -分支管理(创建、推送、删除)
- Tecplot: Legend显示与否
- Oracle中把一张表查询结果插入到另一张表中
- docker安装testlink
- python调用c的方法
- MVC 学习(一)Linq to Entities 简单Demo
- android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)
- java中JVM的原理重温【转】
- 3504. [CQOI2014]危桥【最大流】
热门文章
- Python基础:25文件
- python实现以立春为起点n为周期任意日期所在的日期区间
- angular ui 路由传参
- hadoop2.6.0 + hbase-1.0.0 伪分布配置
- [转][ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [下篇]
- TensorFlow指定使用GPU 多块gpu
- POI 导入、导出Excel
- Codeforces Round #200 (Div. 1 + Div. 2)
- 【mac】关于mac的一些命令
- Eclipse文档注释导出doc