Saving Beans HDU - 3037(卢卡斯定理)
Saving Beans HDU - 3037(卢卡斯定理)
题意:
他们想知道有多少种方法可以在n树中保存不超过m个bean(它们是相同的)。
现在他们求助于你,你应该给他们答案。 结果可能非常巨大; 你应该输出模p的结果,因为松鼠无法识别大数。
1 <= n,m <= 1000000000,p保证是一个素数
题解:
得到公式为:C(n+m,m)%p
利用卢卡斯定理优化
代码:
代码中有两种求逆元的方式
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n, m, p;
ll Ext_gcd(ll a, ll b, ll &x, ll &y)
{if (b == 0) { x = 1, y = 0; return a; }ll ret = Ext_gcd(b, a%b, y, x);y -= a / b * x;return ret;
}
ll Inv(ll a, int m)
{ ll d, x, y, t = (ll)m;d = Ext_gcd(a, t, x, y);if (d == 1) return (x%t + t) % t;return -1;
}
ll poww(ll a,ll b,ll p){ll ans=1;while(b){if(b&1)ans=(ans*a)%p;a=(a*a)%p;b>>=1;} return ans%p;
}
ll Cm(ll n, ll m, ll p)
{ll a = 1, b = 1;if (m > n) return 0;while (m){a = (a*n) % p;b = (b*m) % p;m--;n--;}
// return (ll)a*Inv(b, p) % p; return (ll)a*poww(b, p-2,p) % p;
}int Lucas(ll n, ll m, ll p)
{if (m == 0) return 1;return (ll)Cm(n%p, m%p, p)*(ll)Lucas(n / p, m / p, p) % p;
}int main()
{int T;cin >> T;while (T--){scanf("%lld%lld%lld", &n, &m, &p);printf("%d\n", Lucas(n + m, m, p));}return 0;
}
Saving Beans HDU - 3037(卢卡斯定理)相关推荐
- hdu 3037 Lucas定理
题目可以转换成 x1+x2+--+xn=m 有多少组解,m在题中可以取0-m. x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)*(m+2)...(m+n-1) = ...
- [HDU3037]Saving Beans,插板法+lucas定理
[基本解题思路] 将n个相同的元素排成一行,n个元素之间出现了(n-1)个空档,现在我们用(m-1)个"档板"插入(n-1)个空档中,就把n个元素隔成有序的m份,每个组依次按组序号 ...
- 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)
先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...
- 洛谷——P3807 【模板】卢卡斯定理
P3807 [模板]卢卡斯定理 洛谷智推模板题,qwq,还是太弱啦,组合数基础模板题还没做过... 给定n,m,p($1\le n,m,p\le 10^5$) 求 $C_{n+m}^{m}\ mod\ ...
- 卢卡斯定理及其卢卡斯定理的拓展
前言: 求一个组合数 ,我们可以通过逆元的方式在 O(n)的时间复杂度内求出 但如果数特别大时(数据范围 ),又该怎么办 使用卢卡斯定理求解 卢卡斯定理:(组合数取模,取模的模数只能是质数) 即 模 ...
- 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)
[BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...
- 『数学』--数论--组合数+卢卡斯定理+扩展卢卡斯定理
组合数: 在N个数中选取M个数,问选的方式有几种? 直接递归暴力简单 #include<cstdio> const int N = 2000 + 5; const int MOD = (i ...
- 【启智树NOIP模拟】奇偶【卢卡斯定理】【背包】【bitset】
题意:给定 nnn 个数 aia_iai ,求选出(可以重复,考虑顺序)MMM 个数和为 SSS 的方案数模 222. n≤200,ai≤105,M,S≤1018n\leq 200,a_i\leq ...
- P4720 【模板】扩展卢卡斯定理/exLucas(无讲解,纯记录模板)
P4720 [模板]扩展卢卡斯定理/exLucas 题意: CnmmodpC_{n}^{m}\bmod pCnmmodp 对于 100% 的数据,1≤m≤n≤1018,2≤p≤106,不保证 p 是 ...
最新文章
- mysql切换系统盘命令_mysql常用命令
- 【游戏开发备注之二】配置Xcode版本控制SVN详细步骤内含部分问题解决方案
- centos7 df 命令卡死
- IDEA 运行run 为灰色解决办法
- Java多线程-线程中止
- Django 博客教程(三):创建应用和编写数据库模型
- html文件怎么导出stl文件,3D建模软件导出STL文件的小技巧(一)
- 指令重排序所带来的问题及使用volatile关键字解决问题
- 【转贴】gdb中的信号(signal)相关调试技巧
- 微信 的微服务器配置,spring-boot wm-accesstoken
- Sm4【国密4加密解密】实战
- 服务器系统启用flash,基础设置:Windows Server 2012及2012R2 启用IE Flash
- react中请求网络图片加载不出来的问题 解决
- azure服务器_如何使用Azure Functions和SendGrid构建无服务器报表服务器
- 芯片厂家GitHub库
- Excel 正则表达式的用法
- 【数据结构】栈详解——压栈/入栈 | 弹栈/出栈 | 获取栈顶元素
- iOS 3DES加密无盐值加密
- 试用期六个月,前三个月没有社保,这样的工作机会你会考虑吗?
- ceph客户端使用_CEPH应用
热门文章
- 21张GIF动图让你秒懂数学原理
- java当前时间推前三个月_获取当前时间的前三个月 java
- 计算机视觉招聘_INDEMIND|SLAM、计算机视觉、深度学习算法招聘(社招实习)
- linux新建文件夹明率,linux新建文件和文件夹命令
- mysql在线快速修改密码_MySQL修改密码的几种方式
- mysql 5.7.17 源码安装_mysql5.7.17源码安装
- Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助
- linux编程两个子进程,Linux中fork同时创建多个子进程的方法
- 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
- 在php中使用kind,KindEditor 4.x在PHP中的应用实例!