博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3557 & BZOJ 2982 combination[Lucas定理]
阅读量:6075 次
发布时间:2019-06-20

本文共 1666 字,大约阅读时间需要 5 分钟。

How Many Sets II

Time Limit: 2 Seconds      
Memory Limit: 65536 KB

Given a set S = {1, 2, ..., n}, number m and p, your job is to count how many set T satisfies the following condition:

  • T is a subset of S
  • |T| = m
  • T does not contain continuous numbers, that is to say x and x+1 can not both in T

 

Input

There are multiple cases, each contains 3 integers n ( 1 <= n <= 109 ), m ( 0 <= m <= 104m <= n ) and p ( p is prime, 1 <= p <= 109 ) in one line seperated by a single space, proceed to the end of file.

Output

Output the total number mod p.


 

Lucas定理p为质数情况裸题

因为是选的元素不能连续,我们先把选的元素拿出来,剩下的元素有n-m+1个空,选m个插进去行了

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;ll n,m,P;ll Pow(ll a,ll b){ ll ans=1; for(;b;b>>=1,a=a*a%P) if(b&1) ans=ans*a%P; return ans;}ll Inv(ll a){
return Pow(a,P-2);}ll C(ll n,ll m){ if(n

 BZOJ 2982: combination

模数10007很小,可以直接线性预处理阶乘和逆元,48ms-->4ms

#include 
#include
#include
#include
#include
using namespace std;typedef long long ll;const int N=10007;inline ll read(){ char c=getchar();ll x=0,f=1; while(c<'0'||c>'9'){
if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return x*f;}ll n,m,P=10007;ll inv[N],fac[N],facInv[N];void getInv(int n){ inv[1]=fac[0]=facInv[0]=1; for(int i=1;i<=n;i++){ if(i!=1) inv[i]=-P/i*inv[P%i]%P; inv[i]+=inv[i]<0?P:0; fac[i]=fac[i-1]*i%P; facInv[i]=facInv[i-1]*inv[i]%P; }}ll C(ll n,ll m){ if(n

 

转载地址:http://knxgx.baihongyu.com/

你可能感兴趣的文章
从第一行代码开始开发区块链(二)
查看>>
anjularjs 过滤器
查看>>
iOS当中一些常见的面试题
查看>>
leetcode-350-Intersection of Two Arrays II(求两个数组的交集)
查看>>
2014.2.24 带参数多线程实例
查看>>
不插字段,直接利用OracleSpatial计算
查看>>
关于css3的自定义字体
查看>>
hadoop生态搭建(3节点)-12.rabbitmq配置
查看>>
浅析tnsping
查看>>
《C++ Primer Plus》读书笔记之二—复合类型
查看>>
【本周主题】第四期 - 开发工具控制台摸底了解
查看>>
ShadowGun 图形技术分析
查看>>
C语言运算符优先级 详细列表 <转>
查看>>
返回结点值为e的二叉树指针
查看>>
*栈的应用
查看>>
jar文件运行打断点
查看>>
DHTML 简介
查看>>
linux变量
查看>>
arcgis jsapi接口入门系列(5):几何(点线面)基本操作
查看>>
Java泛型中的通配符
查看>>