**********数论**********
文章平均质量分 59
hqwhqwhq
有梦想就不累
展开
-
HDU 5528 Count a * b (2015长春站B题&&积性函数)
设h[n]h[n]为a∗b=0a*b=0的个数。 f[n]=n2−h[n]g[n]=∑m|nf[m]=∑m|n(m2−h[m])=∑m|nm2−∑m|nh[m]f[n]=n^2-h[n]\\g[n]=\sum_{m|n}f[m]=\sum_{m|n}{(m^2-h[m])}=\sum_{m|n}{m^2}-\sum_{m|n}{h[m]}对于h[n]h[n] h[n]=∑i=1n∑j=1n(原创 2015-11-04 12:48:19 · 1860 阅读 · 0 评论 -
HDU 5895 Mathematician QSC(欧拉定理推广)
分析:附上链接:icpccamp 当 x>φ(m)x>φ(m) 时,ax≡aφ(m)+xmodφ(m)(modφ(m))a^{x}≡a^{φ(m)+x mod φ(m)}(mod φ(m)) 总是对的。不需要互质的条件。 然后高一个矩阵快速幂就搞定了(是不是矩阵快速幂可以搞定所有序列的通项?)代码:#include <bits/stdc++.h>using namespace std;typed原创 2016-09-19 00:52:34 · 440 阅读 · 0 评论 -
HDU-5628-Clarke-and-math-狄利克雷卷积
分析:这个题目要学会数论上面的一个知识点:狄利克雷卷积。主要要知道:(f∗g)=∑d|nf(d)g()nd(f*g)=\sum_{d|n}f(d)g(){n\over{d}}f∗(g∗h)=(f∗g)∗hf*(g*h)=(f*g)*hf∗(g+h)=f∗g+f∗hf*(g+h)=f*g+f*hf∗g=g∗ff*g=g*f 这道题就变成了这个f∗1kf*1^{k}时候用一次快速幂,可以nlo原创 2016-02-20 20:56:55 · 1986 阅读 · 0 评论 -
HDU 5663 (莫比乌斯反演)
分析:这道题就是一道公式推导题,我再来推一遍公式:设f(x)f(x)函数: f(x)={1,0,x是完全平方数否则f(x) =\begin{cases}1, & \text{x是完全平方数} \\0, & \text{否则}\end{cases}则ANS=n×m−∑ni=1∑mj=1f(gcd(i,j))ANS={n}\times{m}-\sum_{i=1}^{n}\sum_{j=1原创 2016-04-11 23:31:53 · 3821 阅读 · 0 评论 -
HDU 5468 Puzzled Elena (容斥)
题意:给一个有根树(树根为11),每一个节点有一个点权(1<=w[i]<=1051<=w[i]<=10^5),问一个节点uu与它的子树上面所有节点互素的数有都少个?分析:暴力判断每一个节点与它所有子树上面的点互素的数的个数,暴力找出cnt[d]cnt[d]:这个子树中dd的倍数的个数。那么接下来可以容斥或者莫比乌斯反演搞定。对于每一个uu,都要维护所有的cnt[d]cnt[d]怎么搞定? 由于遍历原创 2015-10-31 01:11:32 · 625 阅读 · 2 评论 -
51nod 1190 最小公倍数之和 V2(莫比乌斯反演)
题意: 给定1<=a<=b<=109,求∑i=ablcm(i,b)?给定1<=a<=b<=10^9,求\sum_{i=a}^blcm(i,b)?分析: ∑i=ablcm(i,b)=∑i=abi∗bgcd(i,b)=b∗∑d∑a<=i<=bid∗(gcd(i,b)=d)=b∗∑d|b∑⌈ad⌉<=i<=bdi∗(gcd(i,bd)=1)=b∗∑d|b∑⌈ad⌉<=i<=bdi∗∑d′|gcd(i原创 2015-10-29 16:27:59 · 1819 阅读 · 0 评论 -
HDU 4676 Sum Of Gcd(莫队+莫比乌斯反演)
来看答案怎么求? ∑i=LR∑j=i+1Rgcd(a[i],a[j])=∑i=LR∑j=i+1R∑d|gcd(a[i],a[j])ϕ(d)=∑dϕ(d)∑i=L,d|a[i]R∑j=i+1,d|a[j]R1\sum_{i=L}^R\sum_{j=i+1}^Rgcd(a[i],a[j]) =\sum_{i=L}^R\sum_{j=i+1}^R\sum_{d|gcd(a[i],a[j])}\p原创 2015-10-28 00:02:28 · 899 阅读 · 0 评论 -
数论学习初步(容斥原理学习&&hdu 1695&&hdu 5072)
这个周末做的鞍山站的现场赛的题,深深感觉自己数论知识太薄弱,现在来补估计也太难了,毕竟这个周末就是长春站了,然后就主要把容斥学习了一下。然后这篇文章再把自己知道的简单的数论知识小结一下。首先是线性筛素数: 两种筛法:1:大白皮上面介绍的,没什么好说的。 2:用已有的素数来筛: 附上代码:bool vis[maxn];int prime[maxn];//prime[0]存的是素数的个数void原创 2015-10-13 16:18:03 · 492 阅读 · 0 评论 -
SPOJ NUMTRYE (gcd)
看ACdreamers大神博客学习数论知识。大家都能想到的东西:g(n)=∑d|nnd∗ϕ(nd)=∑d|nd∗ϕ(d)g(n)={\sum_{d|n}{n\over{d}}*\phi({n\over{d}})}=\sum_{d|n}{d}*\phi(d)n=pα11∗pα22∗...∗pαkkn=p_1^{\alpha_1}*p_2^{\alpha_2}*...*p_k^{\alpha_k}此时有原创 2015-10-27 18:32:37 · 678 阅读 · 0 评论 -
HDU 4675 GCD of Sequence (莫比乌斯反演)
题意:给nn个数,a1,a2,...,ana_1,a_2,...,a_n,其中1<=ai<=M1<=a_i<=M,找出所有的满足条件的序列b1,b2,...,bnb_1,b_2,...,b_n使得gcd(b1,b2,...,bn)=dgcd(b_1,b_2,...,b_n)=d,其中1<=bi<=M1<=b_i<=M,且序列{bib_i}中有且仅有kk个bi!=aib_i!=a_i。f(d)f(d)原创 2015-10-25 23:55:05 · 1617 阅读 · 0 评论 -
ZOJ 3868 GCD Expectation(莫比乌斯反演)
题意就是求序列的所有gcdgcd的kk次方和。f(d)f(d)表示d=gcd(x1,x2,...,xm)d=gcd(x1,x2,...,xm)的组数。F(d)F(d)表示d|gcd(x1,x2,...,xm)d|gcd(x1,x2,...,xm)的组数。F(x)=∑x|df(d)F(x)=\sum_{x|d}f(d)f(x)=∑x|dμ(dx)∗F(d)f(x)=\sum_{x|d}{\mu({{d原创 2015-10-24 23:45:39 · 665 阅读 · 0 评论 -
HDU 4746 Mophues(莫比乌斯反演)
这道题是跟着秦总博客学的:附上链接:秦总博客用f(d)f(d)表示满足d=gcd(x,y)d=gcd(x,y)且1<=x<=n,1<=y<=m1<=x<=n,1<=y<=m的对数。用F(d)F(d)表示满足d|gcd(x,y)d|gcd(x,y)且1<=x<=n,1<=y<=m1<=x<=n,1<=y<=m的对数。可知:F(d)=⌊nd⌋∗⌊md⌋F(d)=\lfloor\frac{n}{d}\rf原创 2015-10-24 09:36:48 · 1454 阅读 · 0 评论 -
SPOJ VLATTICE Visible Lattice Points (莫比乌斯反演)
此题意思很简单:在N∗N∗NN*N*N的正方体中,有多少整点不能被(0,0,0)(0,0,0)看到。如果一个点(x,y,z)(x,y,z)不能被(0,0,0)(0,0,0)看到,那么一定有一个节点(x′,y′,z′)(x',y',z')在(0,0,0)(0,0,0)到(x,y,z)(x,y,z)的连线上,那么gcd(x,y,z)!=1gcd(x,y,z)!=1,反之,如果 gcd(x,y,z)=1原创 2015-10-24 23:55:08 · 380 阅读 · 0 评论 -
HYSBZ 2818 (莫比乌斯反演)
感觉这道题很不错,莫比乌斯反演学习的是这篇博客:ACdreamers。 正好是里面的例题可以加深理解。设f(d)f(d)为d=gcd(x,y)d=gcd(x,y)满足的对数。 设F(d)F(d)为d|gcd(x,y)d|gcd(x,y)满足的对数。F(d)=⌊nd⌋∗⌊nd⌋F(d)=\lfloor{n\over{d}}\rfloor*\lfloor{n\over{d}}\rfloorF(x)=原创 2015-10-24 23:27:17 · 1789 阅读 · 0 评论 -
HDU 5451 2015长春站网赛1002(数论)
附上大神的博客:广义斐波拉契数列循环节点 比赛的时候搞了两种想法:1:暴力找一遍循环节点,应该能在要求的复杂度内找到(并没有写) 2: 这个时候我们的复杂度降到了p*log(2^(32)),然后天真地写了,结果wa了4发,感觉应该不会贵,待会附上代码(依旧TLE)说说正解:广义斐波拉契数列的循环节:(p-1)*(p原创 2015-09-19 22:59:13 · 984 阅读 · 0 评论 -
HDU 5514 Frogs (2015沈阳F题&&容斥+剪枝)
分析:a[i]a[i]能到达的点为gcd(a[i],m)gcd(a[i],m)的倍数。预处理出所有gcdgcd,两个不同a[i]a[i]能同时到的点为lcm(gcd(a[i],m),gcd(a[j],m))lcm(gcd(a[i],m),gcd(a[j],m))的倍数,容斥写,当遇到当前值是这个gcd(a[i],m)gcd(a[i],m)的倍数是,那么就不用算这个。具体复杂度我也不会算。代码:#in原创 2015-11-08 12:37:13 · 866 阅读 · 2 评论 -
HDU 5446 2015长春站网络赛1010(数论模板题)
这道题知道两个东西就能写出来:lucas+CRT(中国剩余定理),题目很裸。但是有一个坑,就是相乘的时候会爆LL!!!这个时候用一个快速乘就搞定了,这个也是这道题才学会的,其实快速成很简单,就是把一个数变成2进制,然后把*改成了+法(和快速幂基本一样)。 lucas定理: C(n,m) == C(n/p,m/p)*C(n%p,m%p) (mod p) ,p为素数。 证明可以看cxlove大神的博原创 2015-09-16 23:10:02 · 492 阅读 · 0 评论 -
BZOJ 2956 模积和 (分块加速)
∑i=1n∑1<=j<=m,j≠i(n mod i)∗(m mod j)=∑i=1n∑1<=j<=m,j≠i(n−⌊ni⌋)∗(m−⌊mj⌋)=∑i=1n∑1<=j<=m,j≠i(n−⌊ni⌋)∗(m−⌊mj⌋)=∑i=1n(n−⌊ni⌋)∗∑1<=j<=m,j≠i(m−⌊mj⌋)=∑i=1n(n−⌊ni⌋)∗∑j=1m(m−⌊mj⌋)−∑i=1min(n,m)(n−⌊ni⌋)∗(m−⌊mj⌋)=(原创 2015-10-29 23:28:46 · 1128 阅读 · 4 评论