zoj3557 插板法卢卡斯求组合数取模
题意:给一个集合,一共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 插板法卢卡斯求组合数取模相关推荐
- 大数卢卡斯求组合数板子
f数组是求阶乘的,可以开大点. #include<iostream> #include<cstdio> #include<algorithm> #include&l ...
- 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)
先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...
- 梅森素数:nefu 120 梅森素数(卢卡斯—莱默判别法+大数乘积取模)
梅森素数 description 由于梅森学识渊博,才华横溢,为人热情以及最早系统而深入地研究2p-1 型的数(其中p为素数),为了纪念他,数学界就把这种数称为"梅森数":并以Mp ...
- 算法 - 数学 - 组合数 - 隔板法求组合数
一.求组合数 二.隔板法 隔板法是組合數學的方法,用來處理n個無差別的球放進k個不同的盒子的問題.可一般化為求不定方程的解數,並利用母函數解決問題. 隔板法與插空法的原理一樣. 应用隔板法必须满足3个 ...
- 组合数学 —— 组合数取模 —— 卢卡斯定理与扩展卢卡斯定理
[卢卡斯定理] 1.要求:p 是质数,m.n 很大但 p 很小 或者 n.m 不大但大于 p 2.定理内容 其中, 3.推论 当将 n 写成 p 进制:,将 m 写成 p 进制: 时,有: 4.实现 ...
- Chino with Equation (隔板法+除法取模)
链接: https://ac.nowcoder.com/acm/contest/553/D Chino的数学很差,因此Cocoa非常担心.今天,Cocoa要教Chino解不定方程. 众所周知,不定方程 ...
- 算法刷题-数论-组合数、快速幂、逆元、递推求组合数、逆元求组合数
文章目录 acwing885. 求组合数 I(递推:数据范围:2000) acwing875. 快速幂(a的k次方 模 b) acwing876. 快速幂求逆元 acwing886. 求组合数 II( ...
- 组合数学 —— 组合数取模
[概述] 组合数取模,即计算组合数 ,由于 ,同余定理对除法不适用,因此需要使用别的方法来解决这个问题 常见的方法有:使用逆元对组合数取模.递推打表取模.卢卡斯定理.扩展卢卡斯定理等,这些方法应用的场 ...
- 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 ...
最新文章
- Spark机器学习(8):LDA主题模型算法
- 从用户反馈的可解释性提升推荐模型
- 谈谈高并发系统的限流
- 企业级精致 Blazor 套件 BootstrapBlazor 介绍
- Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)
- oracle课程设计摘要,Oracle程序设计课程设计概要(doc 35页)
- .pfx 证书和 .cer 证书
- 【单片机基础篇】三极管
- Mysql5.6.23免安装配置
- sqoop和sqoop2区别
- 最全的Vista破解激活工具——成功激活并通过正版验证
- Android 大漠插件功能,猩猩助手安卓模拟器怎么用大漠插件
- ios(ipad,iphone)屏幕旋转检测通用方法
- Stylized NeRF 水记(NeRF的风格化)
- Handler之创建子线程Handler
- 寻址范围、按字寻址、按字节寻址
- 基于Hadoop和Spark体系的大数据分析平台构建
- 转:hosts文件及修改hosts的作用
- 解决iOS版抖音破解重签名后无法安装
- 解决安装SSL后,通过https访问出现“您与此网站建立的链接并非完全安全”提示的问题