![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 68
qingdaobaibai
这个作者很懒,什么都没留下…
展开
-
【bzoj2982】 combination LUCAS定理
线性筛逆元+lucas定理,没什么难的,只是要注意算阶乘的时候只能算到mod-1,否则会出0。#include#include#include#include#include#include#define mod 10007using namespace std;int fac[100010],inv[100010];int n,m,T;int power(l原创 2015-09-21 13:51:39 · 615 阅读 · 0 评论 -
【bzoj4591】[Shoi2015]超能粒子炮·改 Lucas定理
Lucas定理ans=C(n,0)+C(n,1)+……+C(n,k)=C(n/2333,0)*C(n%2333,0)+C(n/2333,0)*C(n%2333,1)+……+C(n/2333,0)*C(n%2333,2332)+C(/2333,1)*C(n%2333,0)+……+C(n/2333,k/2333)*(n%2333,k%2333)=∑C(n/2333,j)*sum[n%2原创 2016-05-18 19:44:04 · 1743 阅读 · 1 评论 -
【bzoj2813】奇妙的Fibonacci 线性筛法
斐波那契数列有个性质f[gcd(i,j)]=gcd(f[i],f[j])f[j]|f[i]=>gcd(f[j],f[i])=f[j]=>f[j]=f[gcd(i,j)]当j=gcd(i,j)时所以ai表示qi的约数个数bi表示qi的约数的平方和设i=πpi^ki,则ai=π(ki+1)因为i只会被i/p1筛一次,p1表示i最小的质因数所以我们考虑怎样从i/p1转移到原创 2016-03-29 10:11:46 · 652 阅读 · 0 评论 -
【bzoj3994】[SDOI2015]约数个数和 线性筛法+莫比乌斯反演+数论分块
这题有个奇怪的性质,发现这个性质才可做。为什么呢?考虑d是p的倍数,i是d的倍数,d可以是p的1~n/p倍,当d=kp时,i可以选n/(pk)个数。f数组怎么处理呢?O(n√n)就可以吧。#include#include#include#include#include#include#define maxn 50010 using namespace std;原创 2016-04-01 08:26:23 · 694 阅读 · 0 评论 -
【bzoj3930】[CQOI2015]选数 莫比乌斯反演
首先问题是从l~r中选n个数,最大公约数为k的方案数再转化一下,l/k~r/k中选n个数,最大公约数为1的方案数n=2时很容易,我们看一下n=3的情况那么,其实选n个数也是同理分块,枚举r/kd和l-1/kd的取值,然后快速幂计算就可以了,问题在于如何处理出μ函数的前缀和?还是参考PoPoQQQ大爷的吧:http://blog.csdn.net/popoqqq/原创 2016-03-31 14:51:13 · 1350 阅读 · 0 评论 -
【bzoj3529】[Sdoi2014]数表 线性筛法+树状数组+莫比乌斯反演+数论分块
后面那一块暴力做出来就可以了,复杂度是O(n log n)的考虑a的限制,因为f(i)因为本题一共只有100000个左右的f(i),所以可以这么做。#include#include#include#include#include#include#define maxn 100010 using namespace std;struct yts{ int原创 2016-03-31 10:55:25 · 462 阅读 · 0 评论 -
【bzoj2820】YY的GCD 线性筛法+莫比乌斯反演+数论分块
枚举每个质数,然后暴力算,TLE换一种思路,改变枚举顺序#include#include#include#include#include#include#define maxn 10000010using namespace std;int T,tot;long long n,m;int prime[maxn],mu[maxn],f[maxn];long long s原创 2016-03-30 19:10:00 · 977 阅读 · 0 评论 -
【bzoj2301】[HAOI2011]Problem b 莫比乌斯反演+线性筛法+数论分块
首先可以容斥一下,问题变为1~n和1~m中有多少对数最大公约数为k,再转换一下就是1~n/k和1~m/k中有多少对互质的数,这个问题的答案就是最后那个式子。这个东西是可以分块做的,枚举n/kd的取值,预处理出μ(d)的前缀和即可。#include#include#include#include#include#include#define maxn 50010using nam原创 2016-03-30 14:42:09 · 588 阅读 · 0 评论 -
【bzoj2956】模积和 数论分块
额,终于把图片搞出来了。这个式子处理起来是O(n)的,但是我们发现n/i只用O(√n)个取值,我们枚举这O(√n)个取值。假如枚举的取值为k,则把所有n/i=k的i求和即可(k+1)*i>n>=k*i所以i的取值区间为[n/(k+1)+1,n/k]但是我们循环的时候枚举的是i,而不是k,每一次把i变成上一次的取值+1就可以了。最后的那个式子也不难,就是一共有O(√n+√m)原创 2016-03-30 08:31:21 · 1919 阅读 · 1 评论 -
【bzoj1406】 AHOI2007密码箱 数论
化简一下式子。(x+1)(x-1)=k*nx+1=k1n1 x-1=k2n2 k1k2=k n1n2=n那么我们枚举n的大于根号n的因子n1,然后枚举一个k1,之后把k1n1分别作为x+1和x-1来求解,看一看求出的另一个是否是n/n1的倍数,注意用set去重。#include#include#include#include#include#include#原创 2015-09-10 13:51:22 · 1333 阅读 · 2 评论 -
【bzoj2142】礼物 组合数学+中国剩余定理
手抖看了一眼boss题,就入坑了C(n,m)%P怎么求?P=p1^c1 * p2^c2 * p3^c3 * … *pt ^ ct,pi为质数Pi=pi^ci因为P太大了,而且不是素数,所以无从下手但是我们发现可以用中国剩余定理来解决,先算出模Pi的值,最后用中国剩余定理合并。因为Pi只包含一个质因子,所以问题简化了许多。C(n,m)=n!/m!(n-m)!有一种思路原创 2016-03-01 11:06:47 · 923 阅读 · 0 评论 -
【bzoj2111】[ZJOI2010]Perm 排列计数
题目的意思就是有多少个大小为n的小根堆这步转化太神了f[i]表示用1~i的排列组成的小根堆有多少个f[n]=C(size[left],n-1)*f[left]*f[right]#include#include#include#include#include#include#define maxn 1000100using namespace std;原创 2016-03-01 13:42:51 · 649 阅读 · 0 评论 -
【bzoj2242】[SDOI2011]计算器 快速幂+BSGS
第一问,快速幂第二问,exgcd或p是质数,所以y一定有逆元x=y^(-1)*z其中y^(-1)=y^(P-2)因为0没有逆元,所以只有y=0时无解第三问,BSGS设x=bk+c其中k=sqrt(P),b和c都小于sqrt(P)Y^(bk+c)=ZY^(bk)=Z*Y^(-c)用map记录一下Z*Y^(-c),一共sqrt(P)个数枚举b,查询有没有原创 2016-03-28 10:17:26 · 1230 阅读 · 0 评论 -
【bzoj2818】Gcd 线性筛法
gcd(x,y)=pgcd(x/p,y/p)=1枚举每个素数p,计算1~n/p中有多少对互质的数f[i]表示1~i中有多少个与i互质的数,即phi(i)g[i]表示f[i]的前缀和ans=2*∑g[n/p]-cntcnt是n以内素数的个数为什么?因为不能选p和p这种情况#include#include#include#include#include#i原创 2016-03-28 21:54:13 · 480 阅读 · 0 评论 -
【bzoj3122】[Sdoi2013]随机数生成器 BSGS
xi=axi+b特判x1是否等于t当a=0时,xi=b,直接判断t是否等于b当a=1时,xi=x1+(i-1)*b=t,特判b是否等于0,i=(t-x1)*b^(-1)+1当b=0时,xi=x1*a^(i-1)=t,如果x1或a=0,则判断t是否等于0,否则,BSGS否则,xi=axi-1+bxi+b/(a-1)=axi-1+ab/(a-1)xi+b/(a-1)=a原创 2016-03-29 07:55:34 · 600 阅读 · 0 评论 -
【bzoj3288】Mato矩阵 线性筛法
然而是结论题,高斯消元后对角线上的数是phi#include#include#include#include#include#include#define maxn 1000010 #define mod 1000000007using namespace std;int f[maxn];int prime[maxn],phi[maxn];bool vis[m原创 2016-03-29 08:13:42 · 587 阅读 · 0 评论 -
【bzoj1409】Password 线性筛法+矩阵乘法
E[i]=p^f[i]f[i]表示斐波那契数列的第i项E[i]%q=p^f[i]%q因为q所以p^phi(q)%q=1,注意q不一定是质数先求f[i]%phi(q)的值,再用快速幂求值即可按理说,用O(√n)的做法求phi,但是貌似卡不过去,那么直接枚举素数分解质因数就好了#include#include#include#include#include原创 2016-03-29 17:40:32 · 682 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) 总结
重回赛场,第一场比赛,找一找状态A Unimodal Array题意:判断一个数列,是否是先递增,再相等,后递减题解:模拟判断。记录当前位置处于第几段。#include#include#include#include#include#include#define maxn 110using namespace std;int a[max原创 2017-07-15 09:55:03 · 604 阅读 · 1 评论