题意:给一个集合,一共n个元素,从中选取m个元素,选出的元素中没有相邻的元素的选法一共有多少种?

 插板法的经典应用 
 0.首先我们拿出m个小球,还剩下n-m个小球。这n-m个小球一共有n-m+1个空(左右两边也可以),把这m个小球插入到这n-m+1个空里就是答案,即 
   这m个小球的编号取决于它插入的位置,所以和选哪个小球没关系.
 1.1<= p <=1e9不能预处理

#include <iostream>//Lucas模板
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <map>
#define IO  ios::sync_with_stdio(false),cin.tie(0), cout.tie(0);
#pragma comment(linker, "/STACK:1024000000,1024000000")
void ex_gcd(int a, int b, int &d, int &x, int &y) { if (!b) { x = 1; y = 0; d = a; } else { ex_gcd(b, a%b, d, y, x); y -= x * (a / b); }; }
int gcd(int a, int b) { return b ? gcd(b, a%b) : a; }
int lcm(int a,int b){return a/gcd(a,b)*b;}//Ïȳýºó³Ë·ÀÒç³ö
int inv_exgcd(int a, int m) { int d, x, y;ex_gcd(a, m, d, x, y);return d == 1 ? (x + m) % m : -1; }
typedef long long ll;
const int maxn=1e6;
using namespace std;
ll fac[maxn];
ll a,b,mod;
ll C(ll n,ll m,ll mod)
{if(m>n)return 0;ll ans=1;for(int i=1;i<=m;++i){ll a=(n+i-m)%mod,b=i%mod;ans=ans*(a*inv_exgcd(b,mod)%mod)%mod;}return ans;
}
ll Lucas(ll n,ll m,ll mod)
{if(m==0)return 1;return C(n%mod,m%mod,mod)*Lucas(n/mod,m/mod,mod)%mod;
}
int main()
{while(scanf("%lld%lld%lld",&a,&b,&mod)!=EOF){a=a-b+1;ll lu=Lucas(a,b,mod);printf("%lld\n",lu);}return 0;
}

zoj3557 插板法卢卡斯求组合数取模相关推荐

  1. 大数卢卡斯求组合数板子

    f数组是求阶乘的,可以开大点. #include<iostream> #include<cstdio> #include<algorithm> #include&l ...

  2. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

  3. 梅森素数:nefu 120 梅森素数(卢卡斯—莱默判别法+大数乘积取模)

    梅森素数 description 由于梅森学识渊博,才华横溢,为人热情以及最早系统而深入地研究2p-1 型的数(其中p为素数),为了纪念他,数学界就把这种数称为"梅森数":并以Mp ...

  4. 算法 - 数学 - 组合数 - 隔板法求组合数

    一.求组合数 二.隔板法 隔板法是組合數學的方法,用來處理n個無差別的球放進k個不同的盒子的問題.可一般化為求不定方程的解數,並利用母函數解決問題. 隔板法與插空法的原理一樣. 应用隔板法必须满足3个 ...

  5. 组合数学 —— 组合数取模 —— 卢卡斯定理与扩展卢卡斯定理

    [卢卡斯定理] 1.要求:p 是质数,m.n 很大但 p 很小 或者 n.m 不大但大于 p 2.定理内容 其中, 3.推论 当将 n 写成 p 进制:,将 m 写成 p 进制: 时,有: 4.实现 ...

  6. Chino with Equation (隔板法+除法取模)

    链接: https://ac.nowcoder.com/acm/contest/553/D Chino的数学很差,因此Cocoa非常担心.今天,Cocoa要教Chino解不定方程. 众所周知,不定方程 ...

  7. 算法刷题-数论-组合数、快速幂、逆元、递推求组合数、逆元求组合数

    文章目录 acwing885. 求组合数 I(递推:数据范围:2000) acwing875. 快速幂(a的k次方 模 b) acwing876. 快速幂求逆元 acwing886. 求组合数 II( ...

  8. 组合数学 —— 组合数取模

    [概述] 组合数取模,即计算组合数 ,由于 ,同余定理对除法不适用,因此需要使用别的方法来解决这个问题 常见的方法有:使用逆元对组合数取模.递推打表取模.卢卡斯定理.扩展卢卡斯定理等,这些方法应用的场 ...

  9. java乘法逆元与除法取模,关于数论乘法逆元及相关知识点

    在求解a/b%m时,可以转化为(a%(b*m))/b,转化过程如下 令k = (a/b)/m(向下取整), x = (a/b)%m; a/b = k*m + x (x < m); a = k*b ...

最新文章

  1. Spark机器学习(8):LDA主题模型算法
  2. 从用户反馈的可解释性提升推荐模型
  3. 谈谈高并发系统的限流
  4. 企业级精致 Blazor 套件 BootstrapBlazor 介绍
  5. Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)
  6. oracle课程设计摘要,Oracle程序设计课程设计概要(doc 35页)
  7. .pfx 证书和 .cer 证书
  8. 【单片机基础篇】三极管
  9. Mysql5.6.23免安装配置
  10. sqoop和sqoop2区别
  11. 最全的Vista破解激活工具——成功激活并通过正版验证
  12. Android 大漠插件功能,猩猩助手安卓模拟器怎么用大漠插件
  13. ios(ipad,iphone)屏幕旋转检测通用方法
  14. Stylized NeRF 水记(NeRF的风格化)
  15. Handler之创建子线程Handler
  16. 寻址范围、按字寻址、按字节寻址
  17. 基于Hadoop和Spark体系的大数据分析平台构建
  18. 转:hosts文件及修改hosts的作用
  19. 解决iOS版抖音破解重签名后无法安装
  20. 解决安装SSL后,通过https访问出现“您与此网站建立的链接并非完全安全”提示的问题

热门文章

  1. qualcomm memory dump 抓取方法
  2. 用javah 导出类的头文件, 常见的错误及正确的使用方法
  3. springmvc请求参数获取(自动绑定)的几种方法
  4. JSP网站开发基础总结《六》
  5. 10个步骤:如何成为iPhone游戏开发者
  6. 机器学习知识点(二十七)先验概率和后验概率理解
  7. Java实现算法导论中Miller-Rabin随机性素数测试
  8. Ubuntu15.10安装XAMPP
  9. 数据结构源码笔记(C语言):链接栈
  10. Qt 4.7.4 完美动态编译发布动态调试,以及静态编译发布