2017-08-10 19:35:32

整理者:pprp

用于计算C(m,n) % p

代码如下:

//lucas
#include <iostream> using namespace std; typedef long long ll; //a^b%m 快速幂
int quick_power_mod(int a, int b, int m)
{
int result = ;
int base = a;
while(b > )
{
if(b& == )//如果b是奇数
{
result = (result * base) % m;
}
base = (base * base)%m;
b>>=;
}
return result;
} //组合数取模 C(a,b)%p
ll composition(ll a, ll b, int p)
{
if(a < b)
return ;
if(a == b)
return ;
if(b > a - b) b = a - b; int ans = , ca = , cb = ;
for(ll i = ;i < b; i++)
{
ca = (ca * (a - i))%p;
cb = (cb * (b - i))%p;
} ans = (ca * quick_power_mod(cb,p - , p)) % p;
return ans;
} ll lucas(ll n , ll m , ll p)
{
ll ans = ;
while(n && m && ans)
{
ans = (ans * composition(n%p, m%p, p))%p;
n /= p;
m /= p;
}
return ans;
} int main()
{
ll m, n; while(cin >> m >> n)
{
cout << lucas(m,n,) << endl; //这里的104729是比较大的一个素数
}
return ;
}

最新文章

  1. OpenGL ES crash notes 01 - Nice to meet you
  2. (视频) 《快速创建网站》1. 网站管理平台WordPress &amp; 微软Azure 云计算简介
  3. Java数据类型和运算符
  4. sql 如何把查询得到的结果如何放入一个新表中
  5. Win8.1安装VirtualSVN Server发生service visualSVN Server failed to start解决办法
  6. PathAnimation
  7. 深度学习算法实践15---堆叠去噪自动编码机(SdA)原理及实现
  8. lightoj 1030 概率dp
  9. javascript 16/1/14随记
  10. 一步步学会使用SeaJS(转)
  11. WCF技术剖析之一:通过一个ASP.NET程序模拟WCF基础架构
  12. JAVA字符串比较equals()和equalsIgnoreCase()差异
  13. hibernate它 10.many2many单向
  14. 隐藏Nginx版本号的安全性与方法
  15. slurm任务调度系统部署和测试(一)
  16. [Phonegap+Sencha Touch] 移动开发26 Android下的sencha touch程序,转屏时,Ext.Viewport不能触发orientationchange事件的解决的方法
  17. 报错:org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version.
  18. 误删除 linux 系统文件了?这个方法教你解决
  19. typeof(), __typeof(), __typeof__(), -isKindOfClass:的区别
  20. php字符编码转换之gb2312转为utf8(转)

热门文章

  1. python基础-第七篇-7.2面向对象(进阶篇)
  2. 前端开发 - HTML - 简介
  3. luarocks安装以及lfs安装
  4. python爬虫系列(2)—— requests和BeautifulSoup
  5. maven+springmvc+spring+mybatis
  6. mysql 提示符显示用户,数据库等信息
  7. __all__方法的作用
  8. Linux系统——引导过程与服务控制
  9. Mac使用操作
  10. HDU 5963 朋友(树+博弈)