题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2982

明明是lucas定理裸题……

非常需要注意C( )里  if ( n<m ) return 0; !!!!!

可以预处理阶乘和其逆元,也可以现求。现求阶乘逆元的话,可以把 jc[m] 和 jc[n-m] 乘起来再放到pw里。

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int mod=;
int T,n,m,jc[mod+],ans;
int pw(int x,int k)
{
int ret=;while(k){if(k&)(ret*=x)%=mod;x=(ll)x*x%mod;k>>=;}return ret;
}
void init()
{
jc[]=;
for(int i=;i<mod;i++)jc[i]=jc[i-]*i%mod;
}
int C(int n,int m)
{
if(n<m)return ;//
return (ll)jc[n]*pw(jc[m]*jc[n-m],mod-)%mod;//jc[m]*jc[n-m]一起求逆元
}
int lucas(int n,int m)
{
if(!m)return ;
if(n<mod&&m<mod)return C(n,m);
return lucas(n/mod,m/mod)*C(n%mod,m%mod)%mod;
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
printf("%d\n",lucas(n,m));
}
return ;
}

现求阶乘逆元

#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
const int mod=;
ll n,m;
int T,jc[mod+],jcn[mod+],ans;
int pw(int x,int k)
{
int ret=;while(k){if(k&)(ret*=x)%=mod;(x*=x)%=mod;k>>=;}return ret;
}
void init()
{
jc[]=;
for(int i=;i<mod;i++)jc[i]=jc[i-]*i%mod;
jcn[mod-]=pw(jc[mod-],mod-);
for(int i=mod-;i>=;i--)jcn[i]=jcn[i+]*(i+)%mod;
}
int C(int n,int m)
{
if(n<m)return ;////
return jc[n]*jcn[m]%mod*jcn[n-m]%mod;
}
int lucas(ll n,ll m)
{
if(!m)return ;
if(n<mod&&m<mod)return C(n,m);
return lucas(n/mod,m/mod)*C(n%mod,m%mod)%mod;
}
int main()
{
init();
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld",&n,&m);
printf("%d\n",lucas(n,m));
}
return ;
}

最新文章

  1. 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
  2. WCF调用
  3. 新版 itextsharp pdf code
  4. Linux指令小结
  5. delayed ack与nagle&#39;s算法
  6. C#Light Unity逻辑热更新解决方案0.20 发布
  7. 微信公众平台中添加qq在线聊天代码
  8. Delphi 中的 procedure of object
  9. 使用 Delphi Xe 的 TDictionary
  10. SVN服务器几种备份策略---重点svnsync备份---OK
  11. 关于IIS部署成功后,局域网其他用户无法访问的问题解决方法
  12. 一类斜率优化的dp(特有性质:只能连续,不能交叉)
  13. 网页头部 lang的声明
  14. 【Javascript】JS的异步操作,浏览器的多线程间的协作
  15. web程序顺序
  16. GitHub入门与实践 读书笔记三:(1)GitHub账户注册教程
  17. Docker2之Service
  18. VS版本号定义、规则和相关的Visual Studio插件
  19. Python通过LDAP验证、查找用户(class,logging)
  20. linux 查找文件命令

热门文章

  1. Docker容器技术-镜像分发
  2. verilog中一些基本的门电路如pmos和nmos等
  3. cocos2dx打飞机项目笔记二:BulletLayer类
  4. XML 的解析方法
  5. C# XML对象序列化、反序列化 - PEPE YU
  6. Android Studio2.3中简单配置,释放C盘空间
  7. Don&#39;t add unneeded context不要加不需要的文本
  8. Python 正则表达式匹配小数
  9. JavaScrip 原生多文件上传及预览 兼容多浏览器
  10. UML类图(一)-------概述+结构