博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj2142: 礼物
阅读量:5280 次
发布时间:2019-06-14

本文共 1374 字,大约阅读时间需要 4 分钟。

拓展Lucas板子放一手

#include
#include
#include
#include
#include
#include
using namespace std;typedef long long LL;typedef pair
pa;int mod;int plen,p[30],mip[30];void emmmm(){ int k=mod; for(int i=2;i*i<=mod;i++) if(k%i==0) { p[++plen]=i,mip[plen]=1; while(k%i==0)k/=i,mip[plen]*=i; } if(k!=1)p[++plen]=k,mip[plen]=k;}//~~~~~~~~~~~~~~~~~~~分解mod~~~~~~~~~~~~~~~~~~~~~ void exgcd(int a,int b,int &x,int &y){ if(a==0) { x=0,y=1; return ; } else { int tx,ty; exgcd(b%a,a,tx,ty); x=ty-b/a*tx; y=tx; }}LL inv(int A,int B)//不是质数不能用快速幂求逆元!! { int x,y; exgcd(A,B,x,y); return (x%B+B)%B;}//~~~~~~~~~~~~~~~getinv(mod p)~~~~~~~~~~~~~~~~~~~~~~~~LL quick_pow(int A,int p,int mo) { int ret=1; while(p!=0) { if(p%2==1)ret=(LL)ret*A%mo; A=(LL)A*A%mo;p/=2; } return ret;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //-----------------------------------------init-----------------------------------------------------------------pa solve(int n,int id)//first p[id]因子个数,second n!除了这些因子的值 { if(n==0)return make_pair(0,1); LL ans=1; int d=n/mip[id]; if(d>0) { for(int i=2;i
n){printf("Impossible\n");return 0;} LL ans=exlucas(n,s); for(int i=1;i<=m;i++) ans=ans*exlucas(s,w[i])%mod, s-=w[i]; printf("%d\n",ans); return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/9911261.html

你可能感兴趣的文章
Java知识系统回顾整理01基础03变量09块
查看>>
(非)奇异矩阵
查看>>
云+社区技术沙龙深圳站,与大咖聊聊“互联网架构”
查看>>
大咖说:如何借助腾讯云简单、高效移动开发
查看>>
有意思的《404》
查看>>
hdu-5009-Paint Pearls-dp
查看>>
Codeforces Round #246 (Div. 2)
查看>>
内存泄漏调查
查看>>
jquery获取html元素的绝对位置和相对位置的方法
查看>>
谈谈spring
查看>>
ios中webservice报文的拼接
查看>>
Power BI 报告的评论服务支持移动设备
查看>>
MySQL 5.7社区版安装实践
查看>>
vue-auto-focus: 控制自动聚焦行为的 vue 指令
查看>>
docker入门学习(四) 安装nginx及配置
查看>>
BottomNavigationBarItem fixed
查看>>
[BZOJ1601] [Usaco2008 Oct] 灌水 (kruskal)
查看>>
吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-time...
查看>>
有人物联网数传终端设备在智慧电力和公共事业中的应用
查看>>
《剑指offer》第三_二题(不修改数组找出重复的数字)
查看>>