$Noip2016/Luogu2822$ 组合数问题
看这题题解的时候看到一个好可爱的表情(●'◡'●)ノ♥
$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 ;
}
随机推荐
- laravel 队列重启
我在job中写了邮件发送 ,线下环境测试是无问题的 ,现在放到线上出现了问题. 问题描述: 部分时候邮件功能可用,部分时间邮件功能不可用. 邮件功能不可用的时候,job发送失败,失败原因是无发送人,打 ...
- 13 -3 jquery选择器和 jquery动画
一 选择器: 1 基本选择器 例子: <!--id 类 标签--> <!DOCTYPE html> <html lang="en"> <h ...
- Hbase数据模型物理视图
- 从开源小白到 Apache Member,我的成长之路
我们走过的每一步路,都会留下印记,越坚实,越清晰. 近日,Apache 软件基金会(ASF)官方 Blog 宣布全球新增 40 位 Apache Member,张乎兴有幸成为其中一位. 目前,全球共有 ...
- 【[Offer收割]编程练习赛9 B】水陆距离
[题目链接]:http://hihocoder.com/problemset/problem/1478 [题意] [题解] 一开始把所有的水域的位置都加入到队列中去; 然后跑一个bfs. 第一次到达的 ...
- Mysql统计信息处理及binlog解释
TODO use db_name; -- 分析表 ANALYZE TABLE table_name; -- 查看表信息 ; -- 查看索引 SHOW INDEX FROM table_name; ht ...
- H3C TCP连接的建立
- Activiti 工作流入门指南
概览 如我们的介绍部分所述,Activiti目前分为两大类: Activiti Core Activiti Cloud 如果你想上手Activiti的核心是否遵循了新的运行时API的入门指南:Acti ...
- 怎样判断一个jquery对象是否为空jquery对象
if ( $('#myDiv').length ){} http://stackoverflow.com/questions/47... 也可以直接判断$('#myDiv')[0]===undefin ...
- H3C 什么是OSPF