原文链接http://www.cnblogs.com/zhouzhendong/p/8110015.html 题目传送门 - BZOJ2142 题意概括 小E购买了n件礼物,送给m个人,送给第i个人礼物数量为wi.计算出送礼物的方案数模P后的结果. 设P=p1^c1 * p2^c2 * p3^c3 * … *pt ^ ct,pi为质数. 对于100%的数据,1≤n≤10^9,1≤m≤5,1≤pi^ci≤10^5. 题解 首先,我们可以列出答案: ans=∑1<=i<=n C(n,n-∑1<…
2142: 礼物 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2286  Solved: 1009[Submit][Status][Discuss] Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物,打算送给m个人 ,其中送给第i个人礼物数量为wi.请你帮忙计算出送礼物的方案数(…
题意:n件礼物,送给m个人,每人的礼物数确定,求方案数. 解题关键:由于模数不是质数,所以由唯一分解定理, $\bmod  = p_1^{{k_1}}p_2^{{k_2}}......p_s^{{k_s}}$ 然后,分别求出每个组合数模每个$p_i^{{k_i}}$的值,这里可以用扩展lucas定理求解,(以下其实就是扩展lucas定理的简略证明) 关于$C_n^m\% {p^k}$, $C_n^m = \frac{{n!}}{{m!(n - m)!}}$, 我们以$n=19,p=3,k=2$为…
最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a,b)=gcd(b,a%b); 特殊的,gcd(a,0)=gcd(0,a)=a; 然后一行 int gcd(int m,int n) { return n?gcd(n,m%n):m; } 2.扩展欧几里得 在班里天天看紫书,终于会打(背)了. 专门对于形如 ax+by=d(a,b,d为常数,d=gc…
扩展Lucas定理模板题(貌似这玩意也只能出模板题了吧~~本菜鸡见识鄙薄,有待指正) 原理: https://blog.csdn.net/hqddm1253679098/article/details/82897638 https://blog.csdn.net/clove_unique/article/details/54571216 感觉扩展Lucas定理和Lucas定理的复杂程度差了不止一个档次,用到了一大堆莫名其妙的函数. 另外谁能告诉我把一个很大的组合数对一个非质数取模有什么卵用 #i…
原文链接http://www.cnblogs.com/zhouzhendong/p/8109156.html 题目传送门 - BZOJ1951 题意概括 求 GM mod 999911659 M=∑i|nC(n,i) N,G<=109 题解 我们发现999911659是一个素数,设为p. 费马小定理:对于任意正整数a,和素数p,有 ap-1 Ξ 1 (mod p) 由此可得, GM Ξ GM mod (p-1) (mod p) 这个可以用快速幂搞定,现在的问题就是如何计算M 我们研究p-1这个数…
题意: F(1)=A,F(2)=B,F(n)=C*F(n-2)+D*F(n-1)+P/n 给定ABCDPn,求F(n) mod 1e9+7 思路: P/n在一段n里是不变的,可以数论分块,再在每一段里用矩阵快速幂 debug了一下午.. 坑点: 1.数论分块的写法要注意,已更新 2.矩阵乘法在赋值回去的时候记得模一下 3.矩阵相乘不可逆,注意看一下 代码: #include<iostream> #include<cstdio> #include<algorithm> #…
计算a^n % b,其中a,b和n都是32位的整数. 快速幂搞就过了.快速幂首先就是要知道 (a*b)%c = ((a%c)*b)%c ,所以经过推导得出. (a^n)%b = ((((a%b)*a)%b)*a)..........%b)*a) %b    (n次) 这样只能解决的a^n 超出计算机计数范围,复杂度还是没有降下来呢. 怎么办呢^O^,bit-manipulation!!!!!! 具体详解自行百度好了^_^(利用了二分的思想) Code: class Solution { /* *…
[CQOI2018]交错序列 \(solution:\) 这一题出得真的很好,将原本一道矩阵快速幂硬生生加入组合数的标签,还那么没有违和感,那么让人看不出来.所以做这道题必须先知道(矩阵快速幂及如何构建递推矩阵)(组合数及二项式定理). 不知道大家有没有做过洛谷的帕秋莉手环及P哥的桶,这道题中不能有相邻的两个1就是我们在构造这个交错序列时不能连续加入两个1,这个如果直接让我们求方案数(不靠虑一的个数)就是矩阵快速幂的板子了(可以自己推递推方程).但是这1题偏偏把1的个数搭上了,我们发现1的个数是…
题目链接 答案就是C(n,m1) * C(n-m1,m2) * C(n-m1-m2,m3)...(mod p) 使用扩展Lucas求解. 一个很简单的优化就是把pi,pi^ki次方存下来,因为每次分解p都是很慢的. 注意最后p不为1要把p再存下来!(质数) COGS 洛谷上的大神写得快到飞起啊QAQ 就这样吧 3.25 Update:预处理阶乘可以很快,别忘longlong.代码见下. //836kb 288ms #include <cmath> #include <cstdio>…
接上一篇,那个递推式显然可以用矩阵快速幂优化...自己随便YY了下就出来了,学了一下怎么用LaTeX画公式,LaTeX真是个好东西!嘿嘿嘿 如上图.(刚画错了一发...已更新 然后就可以过V2了 orz CZL卡常大师,我怎么越卡越慢啊QAQ #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<cmath> #define ll long…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2142 没给P的范围,但说 pi ^ ci<=1e5,一看就是扩展lucas. 学习材料:https://blog.csdn.net/clove_unique/article/details/54571216 https://www.cnblogs.com/elpsycongroo/p/7620197.html 于是打(抄)了第一份exlucas的板子.那个把 pi的倍数 和 其余部分 分开…
题目描述 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物,打算送给m个人 ,其中送给第i个人礼物数量为wi.请你帮忙计算出送礼物的方案数(两个方案被认为是不同的,当且仅当存在某 个人在这两种方案中收到的礼物不同).由于方案数可能会很大,你只需要输出模P后的结果. 输入 输入的第一行包含一个正整数P,表示模: 第二行包含两个整整数n和m,分别表示小E从商…
Code: #include<bits/stdc++.h> #define maxn 10000004 #define ll long long using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); } int cnt; int phi[maxn],vis[maxn],prime[maxn]; ll qpow(ll a,l…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2142 前几天学了扩展卢卡斯定理,今天来磕模板! 这道题式子挺好推的(连我都自己推出来了) ,总之就是在 n 个里取 w[1] 个,剩下的里面再取 w[2] 个,再在剩下的里面取... 这里的模数 P 一看就不是质数啊!大组合数对合数取模,就要用到扩展卢卡斯定理了: 关于扩展卢卡斯定理,可以看这篇博客:https://blog.csdn.net/clove_unique/article/de…
题意:有n件礼物,m个人,每个人分别需要w[i]件礼物,求分礼物的不同方案数 mod P 提示:设P=p1^c1 * p2^c2 * p3^c3 * … *pt ^ ct,pi为质数. 1≤n≤10^9,1≤m≤5,1≤pi^ci≤10^5. P不一定为质数 思路:经推导答案即为n!/(w[i]!),i=1..n 考虑P不是质数 将P分解为提示中所说的形式,可以发现所有pt^ct都是互质的,所以我们可以用下图的中国剩余定理合并 From http://blog.csdn.net/popoqqq/…
题目 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物,打算送给m个人 ,其中送给第i个人礼物数量为wi.请你帮忙计算出送礼物的方案数(两个方案被认为是不同的,当且仅当存在某 个人在这两种方案中收到的礼物不同).由于方案数可能会很大,你只需要输出模P后的结果. 输入格式 输入的第一行包含一个正整数P,表示模: 第二行包含两个整整数n和m,分别表示小E从商…
[bzoj2242]: [SDOI2011]计算器 1.快速幂 2.扩展欧几里得(费马小定理) 3.BSGS /* http://www.cnblogs.com/karl07/ */ #include <cstdlib> #include <cstdio> #include <cstring> #include <cmath> #include <map> #include <algorithm> using namespace st…
读了一下题就会很愉快的发现,这个数列是关于p的幂次的斐波那契数列,很愉快,然后就很愉快的发现可以矩阵快速幂一波,然后再一看数据范围就......然后由于上帝与集合对我的正确启示,我就发现这个东西可以用欧拉函数降一下幂,因为两个数一定互质因此不用再加一个phi(m),于是放心的乘吧宝贝!! #include <cstdlib> #include <cstring> #include <cstdio> #include <iostream> #include &…
方便复制 快速乘/幂 时间复杂度 \(O(\log n)\). ll nmod; //快速乘 ll qmul(ll a,ll b){ ll l=a*(b>>hb)%nmod*(1ll<<hb)%nmod; ll r=a*(b&((1<<hb)-1))%nmod; return (l+r)%nmod; } //快速幂 ll qpow(ll a,ll b){ ll res=1; while(b){ if(b&1)res=res*a%nmod; a=a*a%n…
先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N integers a 1, a 2, -, a N, and M, K. She says each integers 1 ≤ a i ≤ M. And now Alice wants to ask for each d = 1 to M, how many different sequences b…
Tom and matrix Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5226 Mean: 题意很简单,略. analyse: 直接可以用Lucas定理+快速幂水过的,但是我却作死的用了另一种方法. 方法一:Lucas定理+快速幂水过 方法二:首先问题可以转化为求(0,0),(n,m)这个子矩阵的所有数之和.画个图容易得到一个做法,对于n<=m,答案就是2^0+2^1+...+2^m=2^(m+1)-1,对于n>m…
黑白图像直方图 发布时间: 2017年7月9日 18:30   最后更新: 2017年7月10日 21:08   时间限制: 1000ms   内存限制: 128M 描述 在一个矩形的灰度图像上,每个像素点或者是黑色的或者是白色的.黑色像素点用1表示,白色像素点用0表示.现在要求你编写一个程序,计算每列上黑色像素点的个数并输出.如下图所示是一个6∗8的黑板图像. 1 1 0 0 1 1 1 1  0 1 1 0 1 0 1 0  1 1 1 1 0 1 1 0  0 1 1 0 0 1 0 0 …
BZOJ_2142_礼物_扩展lucas+组合数取模 Description 一年一度的圣诞节快要来到了.每年的圣诞节小E都会收到许多礼物,当然他也会送出许多礼物.不同的人物在小E 心目中的重要性不同,在小E心中分量越重的人,收到的礼物会越多.小E从商店中购买了n件礼物,打算送给m个人 ,其中送给第i个人礼物数量为wi.请你帮忙计算出送礼物的方案数(两个方案被认为是不同的,当且仅当存在某 个人在这两种方案中收到的礼物不同).由于方案数可能会很大,你只需要输出模P后的结果. Input 输入的第一…
BZOJ_2242_[SDOI2011]计算器_快速幂+扩展GCD+BSGS 题意: 你被要求设计一个计算器完成以下三项任务: 1.给定y,z,p,计算Y^Z Mod P 的值: 2.给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数: 3.给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数.   分析: 各种板子题   代码: // luogu-judger-enable-o2 // luogu-judger-enable-o2 #include <std…
[BZOJ4002][JLOI2015]有意义的字符串(数论,矩阵快速幂) 题面 BZOJ 洛谷 题解 发现我这种题总是做不动... 令\(A=\frac{b+\sqrt d}{2},B=\frac{b-\sqrt d}{2}\). 发现\(A+B=b,AB=\frac{b^2-d}{4}\). 要求的东西是\(A^n\),我们变成\(A^n+B^n-B^n\). 分开考虑,发现\(A^n+B^n=(A^{n-1}+B^{n-1})(A+B)-(A^{n-2}+B^{n-2})AB\),这样子前…
原文链接http://www.cnblogs.com/zhouzhendong/p/8116330.html UPD(2018-03-26):回来重新学数论啦.之前的博客版面放在更新之后的后面. 题目传送门 - BZOJ3561 题意概括 给出$n,m$,求$\Large\sum_{i=1}^n\sum_{j=1}^m lcm(i,j)^{\gcd(i, j)}$. $1\leq n,m\leq 500000$ 题解 先推式子:(假设$n\leq m$) $$\sum_{i=1}^n\sum_{…
[BZOJ2432][NOI2011]兔农(数论,矩阵快速幂) 题面 BZOJ 题解 这题\(75\)分就是送的,我什么都不想写. 先手玩一下,发现每次每次出现\(mod\ K=1\)的数之后 把它减一,就变成了\(0\).接着后面的数显然还是一个斐波那契数列 只是都乘了\(0\)之前的那个数作为倍数而已. 拿样例举个例子?以下数字都在模\(7\)意义下进行 1 1 2 3 5 0(1) 5 5 3 0(1) 3 3 6 2 0(1) 大概就是这样子. 当然,如果我们继续手玩下去,也许可以发现点…
ACM数论——快速幂 快速幂定义: 顾名思义,快速幂就是快速算底数的n次幂.其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高. 原理: 以下以求a的b次方来介绍: 把b转换成二进制数.该二进制数第i位的权为  例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算   快速幂位运算: LL pow_mod(LL a, LL b, LL p){//a的b次方取余p LL ret = ; while(b){ )…
题目链接 题意 : 给你n,e,c,并且知道me ≡ c (mod n),而且n = p*q,pq都为素数. 思路 : 这道题的确与题目名字很相符,是个RSA算法,目前地球上最重要的加密算法.RSA算法原理 . 看到这个算法之后,就知道这个题是求cd≡m(mod n),要求m,就要先求d,而d则是e的模反元素. 如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1.这时,b就叫做a的模反元素. 由模反元素可知,ed≡1(mod Phi[n])(p…