
数论
文章平均质量分 80
qkoqhh
这个作者很懒,什么都没留下…
展开
-
51nod1238(杜教筛)
这个题暴露出杜教筛还是没掌握好。。然后就是讨论一个常见的求和然后原式就能化简成然后窝就天真的吧这个和式拿去做杜教筛了。。。然而这个和式的一个问题是函数也是个和式,其卷积实在是难求,所以推到一半推不下去,参考别人的题解转化了下思路,枚举一下倍数,就变成。。。然后令,F(n)为其前缀和,即求再求f(n)的卷积故最终貌似要求好多个F(n)实际上都是...原创 2018-09-01 00:59:13 · 499 阅读 · 0 评论 -
poj2480(求欧拉函数单值/积性函数+狄利克雷卷积)
显然是要枚举一下gcd然后按gcd分类去求,所以原式化为然后枚举d需要sqrt(n),求一个φ需要logn,由于并不是每次都要求那么大的φ,所以时间上限为O(sqrt(n)logn)然后看到网上有更快的做法。。想学一下然后看不懂证明。。然后发现符合狄利克雷卷积形式(虽然还不造是什么),所以答案本身就是一个积性函数求解积性函数,最关键的还是求解f(p^k),令答案为f(n),此时d只...原创 2018-08-22 01:47:52 · 296 阅读 · 0 评论 -
bzoj2154(莫比乌斯函数+积性函数)
这个之前推过,没去实现。。也是将lcm转成gcd做,然后枚举gcd,可得然后换元一下,令d=dd',枚举dd',可得然后主要是处理d'的求和了,由于是因子和,所以可以猜想这个求和本身也是积性函数,那么只要dμ(d)是积性函数就可以了。。设f(n)=nμ(n),n与m互质,f(nm)=nmμ(nm)=nmμ(n)μ(m)=f(n)(m),故f(n)为积性函数设,符合狄利克...原创 2018-08-29 12:00:30 · 740 阅读 · 0 评论 -
bzoj1257(分块)
挺水的。。分块一下就过了。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ *...原创 2018-08-29 20:30:13 · 214 阅读 · 0 评论 -
南京网络赛J(莫比乌斯函数+分块+容斥)
题目链接:https://nanti.jisuanke.com/t/30999这个线性筛O(n)能过,然而有更快的做法。。对每个数d,如果d有平方因子,则μ(d)为0,这样,然后接下来就是求的前缀和了。。然而好像没有什么好的函数和他做卷积。。。所以杜教筛也用不了了。。但是这个前缀和其实可以用容斥求的。。这个前缀和求的是1..n非平方因子的个数,枚举平方因子做容斥,于是有...原创 2018-09-04 14:07:10 · 255 阅读 · 0 评论 -
hdu1695(容斥+莫比乌斯+欧拉函数)
这题有2种做法,先说具有一般性的做法。。思路就是容斥处理,枚举n的质因子,然后组合一下就可以了。。这个可以处理任何一个二维区间的gcd(x,y)==1的点对数。。考虑到素因子个数为loglogn个,复杂度是O(nlogn)然后这题的特殊之处在于a=c=1,这样可以先求出整个区间的gcd=1的点数,然后再用欧拉函数把重复的点去调,因为此时去的点数就是比n小和n互质的所有点。。然后整个区间gc...原创 2018-08-25 19:23:19 · 270 阅读 · 0 评论 -
poj3696(欧拉定理+快速幂+快速乘)
这个。。连续的8要被表示成8/9(10^x-1),然后原题变成求方程8/9(10^x-1)=pL的最小解,继续化简得8/gcd(8,L)*(10^x-1)=9pL/gcd(8,L)由于8/gcd(8,L)和9L/gcd(8,L)互质,所以10^x-1必能整除9L/gcd(8,L),令m=9L/gcd(8,L),化简成为求的最小解然后当m与10不互质的时候,10^x-1显然无法整除m(因...原创 2018-08-26 01:36:09 · 393 阅读 · 0 评论 -
hdu6363(组合数学+容斥+欧拉降幂)
这个题其实不难。。只是当时不会数学吧。。首先这个题目比较绕。。要先化简一波。。首先是这个可以这样考虑,像2^n-1这个形式化成二进制就是n个1,那么他们取gcd就会形成gcd个1(gcd个1可以通过左移,即乘若干个2把每个数逐一除掉),因此然后枚举gcd(设枚举的值为k),可以发现n必须被分成若干个k放进书架,因此看成将n/k本书随机放进k个书架就可以了。。然后将n本书放进k个...原创 2018-09-02 14:55:24 · 348 阅读 · 0 评论 -
PE432(玄学数论递推)
按照超哥的套路做就可以了。。令p为n的最小素因子 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ┃ * ┃... ⌒ ... ┃ *...原创 2018-09-11 17:02:43 · 159 阅读 · 0 评论 -
2018沈阳网络赛C(莫比乌斯函数+容斥)
题目链接:https://nanti.jisuanke.com/t/31444涉及到平方因子就要想到莫比乌斯辣。。然后用μ的平方来判定有无平方因子,可以得到然后就是对这2个求和就可以了,想用杜教筛?上次南京网络赛告诉我们是不行的。。而是要用容斥,枚举素数平方因子,然后做一个容斥,而莫比乌斯函数刚好是他的容斥系数,所以可以得到右边的合式类似,所以最终要求然后sqrt(n)...原创 2018-09-08 21:07:43 · 812 阅读 · 2 评论 -
徐州网络赛D(莫比乌斯函数+玄学递推+杜教筛)
智商差距,超哥还是强orz显然n包含平方因子答案为0,那么只考虑n无平方因子的情况设所求为F(n,m),设p为n的最小素因子,根据i能否被p整除,可得因为n无平方因子,所以其素因子最多只有12个(把前12个素数乘起来是8e12),然后直接递归下去就可以了,可以用map存。。然后递归的终点是m=0和n=1的时候,m=0时F=0,n=1时是莫比乌斯函数的前缀和,可以用杜教筛求。。...原创 2018-09-10 19:49:18 · 298 阅读 · 0 评论 -
hdu5114(不定方程)
这个模型是可以转化的。。先去调边界限制,那么2个球会往同一方向平行移动,事实上他们的坐标可以对称到(n,m)内的范围来,如下图:编号相同的区域可以直接移回来。。为什么可以这么看呢。。因为每碰撞一次相当于一次镜面反射。。 然后如果x相同,2个点的中点碰到纵向边界即可,y相同同理然后就是讨论xy各不相同的情况。。很容易想到,只有他们的中点在(pn,qm)处,即矩形的顶点上时,他们的...原创 2018-10-01 22:12:09 · 252 阅读 · 0 评论 -
cf519F(二分答案+莫比乌斯反演+线性容斥)
题意:从一个序列中的最小互斥序列(即所有数的gcd为1)的长度这个一看就是比较套路的题,还是有不少地方得学的。。然后显然需要二分答案,考虑选取长度为k的序列的gcd,设gcd为d的选取方案为f(d),然而f(d)并不好求而如果设选取的gcd为d的倍数的方案数为g(d),那么,其中s(d)为原序列中能被d整除的个数,这个可以直接对每个数分解因子得到。。(这个思路其实和https://bl...原创 2018-10-30 00:37:25 · 450 阅读 · 0 评论 -
wannafly27D(枚举计数+容斥)
首先gcd只能是x的因子,因此枚举x的因子计数然后要判断gcd为d的个数有多少,设为f(d),而f(d)比较难计算,所以要考虑预处理对每一个加进来的数,把他们的因子都分别记个数,得到g(d),为能被d整除的数的个数那么这样就可以得到f(d)了,从大到小枚举x的因子,那么然后对每个x的因子d,把d的因子对应的减去f(d)就可以了。。然后还有就是gcd的个数其实比较有限,即无用状态...原创 2018-10-30 18:38:16 · 242 阅读 · 0 评论 -
hdu5528(积性函数+欧拉函数)
题意:设(题目已把f(6)的表给出),,给定n(n<=1e9),求g(n)最主要的是求f(m),考虑到模数大于0的情况比较多,所以考虑考虑求ij mod n==0的情况。。然后其实从题目给的表中看出对一个a来说,他0的个数和gcd(a,n)有关,其实也很容易证明,对一个数a来说,取完gcd部分,其余部分都是多余的,所以只要考虑gcd的部分产生的影响就行,然后就差n/gcd这些因子,即...原创 2018-11-02 10:39:53 · 398 阅读 · 0 评论 -
hiho1456(pick定理+杜教筛)
EC热身赛的C。。感觉还是有补的价值。。首先有个结论比较难找。。(等窝找出来已经不到5分钟了。。结论就是一条不经过交点的斜线对应2个三角形。。(这个是队友打表看出来的。。orz这都能看出来的么)证明的话就是用pick定理可以得知合法三角形的面积一定为0.5,那么一个长宽互质的包围盒就可以对应4个三角形(2个斜边对应4个)那么就求斜边个数就可以了。。答案如下然后就可以分块去算...原创 2018-12-23 00:03:51 · 387 阅读 · 0 评论 -
bzoj3994(莫比乌斯函数+结论)
又欺负窝不会结论qaq结论是这个:这个其实很好证明,因为nm的因子一定可以被表示成(化简之后),然后pq互质,这样就变成了求互质的pq的对数。。由此可以做出如下化简然后令,上式又化为然后g可以直接分块预处理,然后再分块算出上式,问题就解决了,复杂度O(Tsqrt(n)) /** * ┏┓ ┏┓ * ┏┛...原创 2018-08-29 02:29:07 · 327 阅读 · 0 评论 -
hdu5608(积性函数+欧拉函数+杜教筛+莫比乌斯反演)
这个题最显眼的地方是10^9的前缀和和已知因子和的结果了,显然需要杜教筛。。按照杜教筛的套路,我们设结果为F(n),那么如果直接算空间和时间都承受不住。。需要预处理。。然后又发现一个大麻烦。。首先可以发现无论是这个函数还是其和函数都不满足积性性质(f(1)!=1),所以需要转换思路。。。运用莫比乌斯反演可以得到然后发现f(n)就是三个积性函数的和。。而其中第二项其实就是...原创 2018-08-28 22:12:18 · 392 阅读 · 0 评论 -
bzoj2005(莫比乌斯函数+分块)
这题还是非常水的。。首先一连线上如果有t个点,那么等差一下加起来的代价为t^2,然后只要像仪仗队那样找连线并统计连线上的点即可,找连线可以用gcd==1来找,点的个数显然是min(n/i,m/j),所以要求的是下式然后令原式化为上式可以分块求,而f(n,m)也可以分块求。。然后复杂度是不超过O(n)的(预计比O(n)还要小很多),然而预处理μ(n)需要O(n),所以其实...原创 2018-08-31 16:41:24 · 207 阅读 · 0 评论 -
UVA11610(欧拉筛+二分+BIT)
看到数论其实就有点虚了。。还好欧拉筛自己还是会的。。其实很明显可以看出最后一个数位一定是0,那么在处理的时候先提出个2和5,把1e7降成1e6然后在1e6内筛出素数,题中的reverse prime就是把这些素数翻转后加0,然后排序。。当然我不是很想排序。。所以直接枚举了各个数去翻转,免去了排序。。然后就是把这些数的因子提出来。。在提的过程中可以判断剩下的数是不是素数。。这样可原创 2018-01-24 18:44:47 · 253 阅读 · 0 评论 -
bzoj1968(数论/欧拉筛/筛法)
这题貌似有许多解法。。一个个尝试。。解法一:欧拉筛。。做这题最主要还是要这个模板。。不然我是不会做数论题的。。看起来貌似是o(n)?只记板子不作深究。。解法二:普通筛,欧拉筛或许筛素数可以到o(n),然而个人筛因子的复杂度感觉也不特别好的样子。。用普通筛试了一下竟然还过了。。虽然差点超时。。复杂度o(nlogn)解法三:对这题来说如果转念一想参考每个因子的贡献的原创 2018-02-03 18:27:20 · 516 阅读 · 0 评论 -
hdu4652(概率dp->数学公式)
第一次自己手动写出数学题蛙好感动qaq用汀老师的笔写果然就是不一样然后这个其实是个dp啦。。当然先出dp方程再说。。0看起来比较好搞,先看看0.。。还是很容易出方程的。。设d[i]为获取i个相同的数字之后离目标的期望步数d[i]=d[i+1]/m+(m-i)/m*d[1]+1然后。。这个d[1]感觉。。不是很好搞的样子耶。。本来就是要求d[1]或者d[0]嘛。。然后发现。。...原创 2018-03-07 18:43:49 · 316 阅读 · 0 评论 -
cf935d(概率dp+逆元)
这个dp倒是不难。。也算不上dp吧。。就是概率直接推而已。。主要处理0的问题,分成大于和等于,把大于先算出来,等于留和给下一位乘上来。。然后为什么要反过来算呢。 。就是比较方便算吧。。其实正着也没什么问题。。。然后这个问的价值主要还是在他问的方式,就是把这个答案保留分数还取膜了,当然小数是不可能取膜的。。所以要把除法转变为乘法。。即把p/q (mod inf)变成p*q^(-1)m原创 2018-02-21 22:23:05 · 496 阅读 · 0 评论 -
hdu6304(打表公式)
推了好久。。。这个题肯定是先把an打出来。。1 1 2 2 3 4 4 4 5 6 6 7 8 8 8 8 9发现从小到大出现,而且除了1,出现次数为二进制形式最低位的位数。。然后是求和。。既然和二进制有关,优先考虑n=2^k的情况。。发现an都是n/2。。然后就要考虑前n/2怎么推出n了。。1 2 2 3 4 4 45 6 6 7 8 8 8贴一下 2-8和9-15(因为...原创 2018-07-24 11:27:53 · 561 阅读 · 2 评论 -
nowcoder多校3H(素数筛)
这个可以枚举gcd,然后另i/gcd=x,j/gcd=y。。变成找n/gcd范围内的质数对(x,y),然后统计一下质数个数就可以了。。 #include<bits/stdc++.h>#define inc(i,l,r) for(int i=l;i<=r;i++)#define dec(i,l,r) for(int i=l;i>=r;i--)#defin...原创 2018-07-26 22:49:47 · 244 阅读 · 0 评论 -
51nod1244(杜教筛)
杜教筛实在是太神了。。有关杜教筛可参考tls文章:https://blog.youkuaiyun.com/skywalkert/article/details/50500009针对这题来说,设莫比乌斯函数为M(n),由,可做如下化简:枚举倍数d的倍数,由于对一个d,其累加次数为n/d次,即倍数为i的d最大为n/d,故有下式然后上式可分块求,tls文章里面分析复杂度为O(n^(3/4)),如...原创 2018-08-26 21:22:56 · 370 阅读 · 0 评论 -
poj2992(积性函数)
然后就可以对组合数做一下素数幂分解求τ(n)就可以了。。然后在线做会T。。要离线预处理。。跑得好慢。。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃ * ┃ > < ┃ * ┃ ...原创 2018-08-22 21:06:11 · 232 阅读 · 0 评论 -
poj2773(欧拉函数+二分+容斥)
欧几里得定理告诉我们gcd(n,m)==gcd(n,n-m),那么就有gcd(n,m)==gcd(n,n+m)因此,对每n个数,与n取gcd的情况其实是相同的。。然后可以利用欧拉函数把m的问题转化为在n内的问题。。然后剩下的就是如何在1..n找第m个和n互斥的数了。。直接枚举貌似可以过。。然而这样还要预处理欧拉函数干嘛。。所以肯定有更快的做法。。找数肯定用二分查找比较优秀,关键...原创 2018-08-22 23:51:34 · 189 阅读 · 0 评论 -
bzoj2190(欧拉函数)
十分经典的题目。。依题意可以转化为求枚举gcd分类求,再利用对称性使 i > j ,可以转化为然后上面还漏了(0,1)(1,1)(1,0)这三种情况加上去即可。。 /** * ┏┓ ┏┓ * ┏┛┗━━━━━━━┛┗━━━┓ * ┃ ┃ * ┃ ━ ┃...原创 2018-08-23 01:09:16 · 264 阅读 · 0 评论 -
bzoj2226(欧拉函数+线性筛积性函数)
和gcd那题很像。。不过这题组数非常多,需要进一步优化 。。仍然是把lcm转成gcd,然后枚举gcd然后可以发现后面其实就是在求n/d内与n/d互质的数的个数(n>2时等于nφ(n)/2),于是显然符合狄利克雷卷积形式,所以f(n)为积性函数。。而组数那么多,O(n)线性筛应该是最好的选择。。然后这个去线性筛的话有点难度,不能直接乘除,因此我们对将n做素因子分解,...原创 2018-08-30 18:01:15 · 287 阅读 · 0 评论 -
bzoj4305(容斥)
貌似是第一次做线性容斥,还是有很多要学的 。。首先肯定是要枚举gcd的(设枚举的值为d)。。然而枚举之后发现要使数列中的gcd为1十分困难。。而如果暂时不考虑去重的话还是可以算的,这时算出来的是gcd为d的倍数,这样的话就直接令g(d)为gcd为d的倍数的方案数,令f(d)为gcd为d的方案数而其中tot为a中能被d整除的数的个数,k为ai==bi的对数(与原题不同)这个可以通...原创 2018-08-30 21:24:56 · 322 阅读 · 0 评论 -
bzoj2440(莫比乌斯函数+容斥+二分)
找数仍然使用二分,check的时候需要知道[1,r]的完全平方数的个数。。其实和筛因子一样,变成筛平方数就可以了。。不过对每个平方数来说,其容斥系数如果去分解质因子显然比较慢。。而根据莫比乌斯函数的定义,a^2的容斥系数正好是μ(a),这样就预处理μ然后枚举容斥一下即可。。然后这题我们要得到一个重要的结论:求1..n中的完全平方数的个数: /** * ...原创 2018-08-23 19:00:32 · 201 阅读 · 0 评论 -
数论小笔记
由于窝队数学能力非常捉急。。所以需要窝这个半吊子假数学选手来充一下数。。主要负责数论这块的内容。。然后窝也比较健忘。。所以就贴一些定理和证明。。 定义一:(a,b)代表最大公约数,[a,b]代表最小公倍数同余性质的补充,注意一下性质7和性质9即可性质1:a≡a(mod m),(反身性) 这个性质很显然.因为a-a=0=m·0。 性质2:若a≡b(mod m),那么b≡a(...转载 2018-08-21 02:13:58 · 774 阅读 · 0 评论 -
bzoj3944(杜教筛+hash技巧)
这个是个常规的杜教筛,按上次的做法交上去会T,原因在于用了map。。。然后需要想办法不用map,手写hash是不可能手写的,所以去网上找解决姿势。。一个比较好的姿势是在存和M(k)的时候可以考虑用a[n/k]这种方式存(其中n是题目要求的)为什么可以这么存呢。。因为所有的k都是n除以一系列数得到的,而整除的顺序是对答案没有影响的,所以当把这些除数乘起来之后,枚举这些除数的积,就共有1....原创 2018-08-28 14:46:54 · 293 阅读 · 0 评论 -
cf1097F(bitset+莫比乌斯反演)
题意:给定n个集合,要求支持4个操作:1.将集合初始化成{v}2.令集合Z=集合X∪集合Y3.令集合4.查询集合里面v出现的次数并模上2 终于放假了。。好久以前的题。。答案只需要模2就很容易想到用二进制来表示,那么可以直接上bitset,那么合并相当于做一次模2加,直接异或就行了。。然后对于操作3,可以直接维护因子出现的个数,维护因子出现次数为g(n),若n在集合中...原创 2019-01-18 22:33:20 · 339 阅读 · 0 评论