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(卢卡斯定理)相关推荐

  1. hdu 3037 Lucas定理

    题目可以转换成 x1+x2+--+xn=m 有多少组解,m在题中可以取0-m. x1+x2+...+xn = m的解的个数,利用插板法可以得到方案数为: (m+1)*(m+2)...(m+n-1) = ...

  2. [HDU3037]Saving Beans,插板法+lucas定理

    [基本解题思路] 将n个相同的元素排成一行,n个元素之间出现了(n-1)个空档,现在我们用(m-1)个"档板"插入(n-1)个空档中,就把n个元素隔成有序的m份,每个组依次按组序号 ...

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

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

  4. 洛谷——P3807 【模板】卢卡斯定理

    P3807 [模板]卢卡斯定理 洛谷智推模板题,qwq,还是太弱啦,组合数基础模板题还没做过... 给定n,m,p($1\le n,m,p\le 10^5$) 求 $C_{n+m}^{m}\ mod\ ...

  5. 卢卡斯定理及其卢卡斯定理的拓展

    前言: 求一个组合数 ,我们可以通过逆元的方式在 O(n)的时间复杂度内求出 但如果数特别大时(数据范围 ),又该怎么办 使用卢卡斯定理求解 卢卡斯定理:(组合数取模,取模的模数只能是质数) 即  模 ...

  6. 【BZOJ4591】[SHOI2015]超能粒子炮·改 (卢卡斯定理)

    [BZOJ4591][SHOI2015]超能粒子炮·改 (卢卡斯定理) 题面 BZOJ 洛谷 题解 感天动地!终于不是拓展卢卡斯了!我看到了一个模数,它是质数!!! 看着这个东西就感觉可以递归处理. ...

  7. 『数学』--数论--组合数+卢卡斯定理+扩展卢卡斯定理

    组合数: 在N个数中选取M个数,问选的方式有几种? 直接递归暴力简单 #include<cstdio> const int N = 2000 + 5; const int MOD = (i ...

  8. 【启智树NOIP模拟】奇偶【卢卡斯定理】【背包】【bitset】

    题意:给定 nnn 个数 aia_iai​ ,求选出(可以重复,考虑顺序)MMM 个数和为 SSS 的方案数模 222. n≤200,ai≤105,M,S≤1018n\leq 200,a_i\leq ...

  9. P4720 【模板】扩展卢卡斯定理/exLucas(无讲解,纯记录模板)

    P4720 [模板]扩展卢卡斯定理/exLucas 题意: CnmmodpC_{n}^{m}\bmod pCnm​modp 对于 100% 的数据,1≤m≤n≤1018,2≤p≤106,不保证 p 是 ...

最新文章

  1. mysql切换系统盘命令_mysql常用命令
  2. 【游戏开发备注之二】配置Xcode版本控制SVN详细步骤内含部分问题解决方案
  3. centos7 df 命令卡死
  4. IDEA 运行run 为灰色解决办法
  5. Java多线程-线程中止
  6. Django 博客教程(三):创建应用和编写数据库模型
  7. html文件怎么导出stl文件,3D建模软件导出STL文件的小技巧(一)
  8. 指令重排序所带来的问题及使用volatile关键字解决问题
  9. 【转贴】gdb中的信号(signal)相关调试技巧
  10. 微信 的微服务器配置,spring-boot wm-accesstoken
  11. Sm4【国密4加密解密】实战
  12. 服务器系统启用flash,基础设置:Windows Server 2012及2012R2 启用IE Flash
  13. react中请求网络图片加载不出来的问题 解决
  14. azure服务器_如何使用Azure Functions和SendGrid构建无服务器报表服务器
  15. 芯片厂家GitHub库
  16. Excel 正则表达式的用法
  17. 【数据结构】栈详解——压栈/入栈 | 弹栈/出栈 | 获取栈顶元素
  18. iOS 3DES加密无盐值加密
  19. 试用期六个月,前三个月没有社保,这样的工作机会你会考虑吗?
  20. ceph客户端使用_CEPH应用

热门文章

  1. 21张GIF动图让你秒懂数学原理
  2. java当前时间推前三个月_获取当前时间的前三个月 java
  3. 计算机视觉招聘_INDEMIND|SLAM、计算机视觉、深度学习算法招聘(社招实习)
  4. linux新建文件夹明率,linux新建文件和文件夹命令
  5. mysql在线快速修改密码_MySQL修改密码的几种方式
  6. mysql 5.7.17 源码安装_mysql5.7.17源码安装
  7. Linux中append函数的用法,linux C代码 open函数参数:O_APPEND问题求助
  8. linux编程两个子进程,Linux中fork同时创建多个子进程的方法
  9. 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
  10. 在php中使用kind,KindEditor 4.x在PHP中的应用实例!