(ex)Lucas总结
(ex)Lucas总结
普通Lucas
求
\]
其中\(n,m,p\leq 10^5\)其中\(p\)为质数
公式不难背,那就直接背吧。。。
\]
如果\({n\;mod\;p}<{m\;mod\;p}\)就直接\(return\;0\)
int Lucas(int n, int m) {
if (!m) return 1;
else return 1ll * C(n % Mod, m % Mod) * Lucas(n / Mod, m / Mod) % Mod;
}
exLucas
设\(p=\prod {p_i}^{k_i}\)
如果我们可以求出每个\(C_n^m\;mod\;{p_i}^{k_i}\)就可以直接\(crt\)合并了
因为
\]
所以问题转化为求几个阶乘以及阶乘的逆元。
所以关键在于如何快速求阶乘
为了方便统计出现了多少个\(p\)的次幂,我们先将阶乘中所有的\(p\)提出来。
可以简单的算出共有\(\left\lfloor\frac np\right\rfloor\)个,中间每一项都除\(p\)
可得\(\left\lfloor\frac np\right\rfloor!\)可以递归求解。
对于不可以提出来的,可以发现他们都对于\(mod\;p^k\)有一个循环节
把循环节中的和不在其中的暴力算就行了
部分代码
ll fac(ll n, ll pi, ll pk) {
if (!n) return 1;
ll res = 1;
for (ll i = 2; i <= pk; i++)
if (i % pi) res = res * i % pk;
res = fpow(res, n / pk, pk);
for (ll i = 2; i <= n % pk; i++)
if (i % pi) res = res * i % pk;
return res * fac(n / pi, pi, pk) % pk;
}
ll CRT(ll b, ll p, ll Mod) { return b * inv(p / Mod, Mod) % p * (p / Mod) % p; }
ll C(ll n, ll m, ll pi, ll pk) {
ll fz = fac(n, pi, pk), fm1 = fac(m, pi, pk), fm2 = fac(n - m, pi, pk);
ll k = 0;
for (ll i = n; i; i /= pi) k += i / pi;
for (ll i = m; i; i /= pi) k -= i / pi;
for (ll i = n - m; i; i /= pi) k -= i / pi;
return fz * inv(fm1, pk) % pk * inv(fm2, pk) % pk * fpow(pi, k, pk) % pk;
}
ll exlucas(ll n, ll m, ll Mod) {
ll res = 0, tmp = Mod;
for (int i = 2; 1ll * i * i <= Mod; i++)
if (tmp % i == 0) {
ll pk = 1; while (tmp % i == 0) pk *= i, tmp /= i;
res = (res + CRT(C(n, m, i, pk), Mod, pk)) % Mod;
}
if (tmp > 1) res = (res + CRT(C(n, m, tmp, tmp), Mod, tmp)) % Mod;
return res;
}
(ex)Lucas总结的更多相关文章
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)
Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...
- 大组合数:Lucas定理
最近碰到一题,问你求mod (p1*p2*p3*……*pl) ,其中n和m数据范围是1~1e18 , l ≤10 , pi ≤ 1e5为不同的质数,并保证M=p1*p2*p3*……*pl ≤ 1e18 ...
- HDU 5446 中国剩余定理+lucas
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- 【BZOJ-4591】超能粒子炮·改 数论 + 组合数 + Lucas定理
4591: [Shoi2015]超能粒子炮·改 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 95 Solved: 33[Submit][Statu ...
- 组合数取模Lucas定理及快速幂取模
组合数取模就是求的值,根据,和的取值范围不同,采取的方法也不一样. 下面,我们来看常见的两种取值情况(m.n在64位整数型范围内) (1) , 此时较简单,在O(n2)可承受的情况下组合数的计算可以 ...
- hdu 5446 Unknown Treasure Lucas定理+中国剩余定理
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- hdu 3037 Saving Beans Lucas定理
Saving Beans Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- 【BZOJ1951】【SDOI2010】古代猪文 Lucas定理、中国剩余定理、exgcd、费马小定理
Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...
- BZOJ4176: Lucas的数论
Description 去年的Lucas非常喜欢数论题,但是一年以后的Lucas却不那么喜欢了. 在整理以前的试题时,发现了这样一道题目“求Sigma(f(i)),其中1<=i<=N”,其 ...
随机推荐
- POJ 2407 Relatives 欧拉函数题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- 【转+修改】容联云通讯api调用短信发送调用
转自 https://my.oschina.net/u/1995134/blog/814540 需要荣联云通讯 的 相对应SDKjar包. CCP_REST_SMS_SDK_JAVA_v2.6.3 ...
- Kafka TimeoutException: Batch Expired 问题排查
当前系统中produer配置request.timeout.ms=30000(30秒),但是broker端配置zookeeper.connection.timeout.ms=1000000,kafka ...
- selenium以及浏览器驱动下载安装
1.下载selenium压缩包 http://pypi.python.org/pypi/selenium 下载后压缩在python文件下的lib>site-package文件夹下 2.进入sel ...
- ListView 中的TextView实现跑马灯效果
案例:怎么样在一个ListView中含有TextView的item中实现字母滚动呢.这个在一些特定的场合经常用得到.如下图,当焦点位于某个item的时候其内容就自动滚动显示 要实现这样的效果,废话不多 ...
- 结合cocos2d-x开发配置sublime text
开发cocos2d-x前端的非核心开发人员对于编辑器的选择,多数的选择有两个,一个是传统的ultraedit,另外的就是现在很流行的sublime text.以前我是比较喜欢用ultraedit的,但 ...
- Android小游戏应用---撕破美女衣服游戏
ImageView after; ImageView before; @Override protected void onCreate(Bundle savedInstanceState) { su ...
- iOS12适配及问题记录,Debug正常使用,Release数据为nil的报错
Debug模式数据一切正常,打包出去的ipa,Release模式下数据为nil的错误,经排查,buiding中的Optimization Level, Release设为None,解决问题. IOS1 ...
- Oracle分析函数(一)
(一)分析函数语法 function_name(<argument>,<argument>...) over(<partition by clause><or ...
- poj1733 Parity Game(扩展域并查集)
描述 Now and then you play the following game with your friend. Your friend writes down a sequence con ...