题面

首先你需要知道这条定理:

C(n,m)=C(n%p,m%p)*C(n/p,m/p);

这样可以递归实现;

注意坑点:是C(n+m,m),并不是C(n,m);

#include <bits/stdc++.h>
using namespace std;
long long n,m,p;
inline long long KSM(long long a,long long b)
{
long long res=;
while(b){
if(b&) res=res*a%p;
a=a*a%p;
b/=;
}
return res%p;
}
long long C(long long n,long long m)
{
if(n<m) return ; //并不是返回1;
long long res1=,res2=;
for(register int i=(n-m+);i<=n;i++){
res1=res1*i%p;
}
for(register int i=;i<=m;i++){
res2=res2*i%p;
}
return res1*KSM(res2,p-)%p;
}
long long LUCAS(long long n,long long m)
{
if(m==){
return ;
}
return C(n%p,m%p)*LUCAS(n/p,m/p)%p;
}
int main ()
{
int t;
cin>>t;
while(t--)
{
cin>>n>>m>>p;
cout<<LUCAS(n+m,m)<<endl;
}
}

最新文章

  1. 菜鸟学Struts2——Actions
  2. .NET平台开发Mongo基础知识
  3. cakePHP的controller回调
  4. java nio 网络框架实现
  5. android:ToolBar详解(手把手教程)
  6. 越狱后想禁用Spotlight
  7. c 深度剖析 4
  8. View的个得区域函数getHitRect,getDrawingRect,getLocalVisibleRect,getGlobalVisibleRect(*)
  9. ASP.NET页面同时发起多个ajax请求,出现阻塞情况
  10. AutoMapper在asp.netcore中的使用
  11. LJN数理化生信奥队自传
  12. centos 7添加硬盘及LVM扩容
  13. NotSupportedError Only secure origins are allowed
  14. Confluence 6 关于统一插件管理器
  15. 2_Linux操作系统和基础命令行
  16. JS学习笔记5_DOM
  17. To 初识Java的小菜菜们 嘻嘻~
  18. forms身份认证仍然能访问html页面解决办法
  19. 在UML系统开发中有三个主要的模型
  20. js模板引擎-art-template常用

热门文章

  1. C# 文件排序
  2. CSP-S2 游记
  3. Python 标准库、第三方库
  4. BOM—Browser Object Model and DOM—Document Object Model
  5. [CSP-S模拟测试]:最大值(数学+线段树)
  6. Spring4 MVC json问题(406 Not Acceptable)
  7. windows上批量杀指定进程
  8. 【学习】SpringBoot之自定义拦截器
  9. DataV数据可视化功能特性
  10. Linux环境快速搭建elasticsearch6.5.4集群和Head插件