数论
文章平均质量分 68
DOFYPXY
这个作者很懒,什么都没留下…
展开
-
莫比乌斯反演与杜教筛
http://www.cnblogs.com/abclzr/p/6242020.html转载 2017-07-10 20:59:51 · 380 阅读 · 0 评论 -
[ARC086]F - Shift and Decrement 位运算+数论+DP
题面 可以证明,在最后一次÷2÷2操作之前,不必要进行连续的两次−1-1操作。因为连续的−1-1操作可以通过先÷2÷2来减少操作次数。 我们定义popcount(x)popcount(x)来表示xx二进制表示中11的个数,那么假设做了kk次÷2÷2操作(可以发现kk不会超过6060),那么可以把所有操作等价为: 1. −p-p (p2k)(p,耗费popcount(p)popcount(p原创 2017-12-17 12:43:49 · 660 阅读 · 0 评论 -
容斥与反演总结
容斥和反演就是一个东西。朴素容斥原理|A1¯¯¯¯∩A2¯¯¯¯∩...∩An¯¯¯¯|=∑i=1N(−1)n−i∑|T|=i,T={x1,..,xi}|Ax1∩Ax2∩...∩Axi||\overline {A_1}\cap\overline {A_2}\cap...\cap\overline {A_n}|=\sum_{i=1}^N(-1)^{n-i}\sum_{|T|=i,T=\{原创 2018-01-20 22:13:01 · 1727 阅读 · 0 评论 -
[BZOJ3512]DZY Loves Math IV 杜教筛+记忆化搜索
发现nnn只有=105=105=10^5,我们先考虑S(n,m)=∑mi=1φ(ni)S(n,m)=∑i=1mφ(ni)S(n,m)=\sum_{i=1}^m \varphi(ni)怎么求。 先把nnn分成两部分,n1=∏pin1=∏pin_1=\prod p_i,即所有质因子一次幂的乘积,n2=∏pci−1in2=∏pici−1n_2=\prod p_i^{c_i-1},即剩下的。不难发现φ(...原创 2018-02-19 12:22:01 · 371 阅读 · 0 评论 -
Miller-Rabin算法与Pollard's Rho算法总结
Miller-Rabin素数测试费马小定理:当ppp是素数时,对于a∈[1,p−1]a∈[1,p−1]a\in [1,p-1],满足 ap−1≡1(mod p)ap−1≡1(mod p)a^{p-1}\equiv 1 (mod \ p) 但是其逆命题是假命题,也就是说对于a∈[1,p−1]a∈[1,p−1]a\in [1,p-1],我们测试所有的ap−1ap...原创 2018-04-24 08:52:49 · 429 阅读 · 0 评论 -
[JXOI2018]游戏 线性筛
题面 我们定义不存在ddd使得d|x,L≤d,d≠xd|x,L≤d,d≠xd|x,L\le d,d\neq x的数xxx为好数。 那么对于一个排列ppp的t(p)t(p)t(p)显然是最后一个好数的出现位置。 线性筛求出好数个数mmm。 枚举最后一个好数的出现位置iii,那么满足的排列的个数有(i−1m−1)m!(n−m)!(i−1m−1)m!(n−m)!{i-1\choose m-1}m...原创 2018-05-04 16:11:55 · 330 阅读 · 0 评论 -
[JZOJ5736]斐波那契
求gcd(afn+bfn+1,cfn+dfn+1)gcd(afn+bfn+1,cfn+dfn+1) \gcd (af_n+bf_{n+1},cf_n+df_{n+1})。 首先有几个简单的性质: gcd(fx,fy)=fgcd(x,y)gcd(fx,fy)=fgcd(x,y)\gcd(f_{x},f_{y})=f_{gcd(x,y)} gcd(a,b)=gcd(a−kb,b)gcd(a,b)...原创 2018-05-22 17:09:03 · 410 阅读 · 0 评论 -
[JZOJ5746]和 自然数幂和+中国剩余定理
{nj}{nj}\begin{Bmatrix} n\\j \end{Bmatrix} 首先考虑计算模质数下的自然数幂和,通过stirling数转化成下降幂, ∑i=0nik=∑i=0n∑j=0k{kj}ij–=∑j=0k{kj}∑i=0nij–∑i=0nik=∑i=0n∑j=0k{kj}ij_=∑j=0k{kj}∑i=0nij_\sum_{i=0}^n i^k=\sum_{i=0}^n\sum...原创 2018-05-27 21:42:19 · 338 阅读 · 0 评论 -
[JZOJ5745]幂 数论阶
首先考虑当nnn有平方因子p2p2p^2时,取a=pa=pa=p就无解了,所以我们只考虑μ2(n)=1μ2(n)=1\mu^2(n)=1的情况。 考虑中国剩余定理,只要保证对于nnn的每个因子pipip_i满足对于所有aaa,求最小的kkk,使得ank≡a(modpi)ank≡a(modpi)a^{n^k}\equiv a \pmod {p_i},即nk≡1(modpi−1)nk≡1(modpi...原创 2018-05-28 11:33:05 · 626 阅读 · 0 评论 -
[联合集训6-15] 盟誓的文艺复兴 数论
若c=2kc=2kc=2k,abc=a(bk)2abc=a(bk)2ab^c=a(b^k)^2;若c=2k+1c=2k+1c=2k+1,abc=(ab)(bk)2abc=(ab)(bk)2ab^c=(ab)(b^k)^2。所以我们只需要考虑c≤3c≤3c\le 3的情况。 那么能表示成ab2ab2ab^2的很好求,就是∑n13a=1μ2(a)(⌊na−−√⌋−a)∑a=1n13μ2(a)(⌊na...原创 2018-06-20 20:37:24 · 744 阅读 · 0 评论 -
[联合集训6-18]指阶数乘 扩展欧拉定理
设f(n)=n(n−1)(n−2)...f(n)=n(n−1)(n−2)...f(n)=n^{(n-1)^{{(n-2)}...}},那么f(n)modm=nf(n−1)modφ(m)+φ(m)modmf(n)modm=nf(n−1)modφ(m)+φ(m)modmf(n) \bmod m=n^{f(n-1)\bmod \varphi(m)+\varphi(m)}\bmod m。直接递归即可,递归...原创 2018-06-20 20:45:59 · 294 阅读 · 0 评论 -
[联合集训6-11] 数数题 多项式+自然数幂和
因为保证了Bi<Ai+1Bi<Ai+1B_iiii位的111分配给第i−1i−1i-1位变成AiAiA_i,求一共有多少种分配方法。 那么我们设ft(n)ft(n)f_t(n)表示假设第ttt位上是nnn(i=1..t−1i=1..t−1i=1..t-1位都是BiBiB_i),有多少种分配方案,那么枚举分给下一位多少,就有 ft(n)=∑i=0nft−1(iAt+Bt−1)ft(n...原创 2018-06-14 20:48:38 · 259 阅读 · 0 评论 -
[联合集训6-12] Fraction 莫比乌斯反演+杜教筛+类欧几里得
因为区间可以差分成前缀,我们只用考虑≤ab≤ab\le \frac{a}{b}的最简真分数jiji\frac{j}{i}的个数。 Ans=∑1≤j<i≤n[j≤aib][gcd(i,j)=1]Ans=∑1≤j<i≤n[j≤aib][gcd(i,j)=1]Ans=\sum_{1\le j∑1≤j<i≤n[j≤aib]∑d|gcd(i,j)μ(d)=∑d=1nμ(d)∑i=1⌊nd...原创 2018-06-14 21:32:57 · 291 阅读 · 0 评论 -
[联合集训6-26] 盒子 莫比乌斯反演+杜教筛
题目就是求∑ni=1∑nj=1i+jgcd(i,j)−2n2∑i=1n∑j=1ni+jgcd(i,j)−2n2\sum_{i=1}^n\sum_{j=1}^n\frac{i+j}{\gcd(i,j)}-2n^2 枚举d=gcd(i,j)d=gcd(i,j)d=\gcd(i,j), ∑d=1n∑i=1n∑j=1n[gcd(i,j)=d]i+jd∑d=1n∑i=1n∑j=1n[gcd(i,j)=d...原创 2018-06-26 20:28:13 · 368 阅读 · 0 评论 -
[2018雅礼集训1-10]Function 积性函数前缀和
题面 题目要我们求 ∑i=1n∑d|iμ(d)∗σ20(id)\sum_{i=1}^n\sum_{d|i}\mu(d)*\sigma_0^2(\frac{i}{d}) 设f(i)=∑d|iμ(d)∗σ20(id)f(i)=\sum_{d|i}\mu(d)*\sigma_0^2(\frac{i}{d}),感觉ff会是个很优美的东西,打表发现 f(i)=σ0(i2)f(i)=\sigma_0(原创 2018-01-11 22:18:08 · 926 阅读 · 0 评论 -
[SPOJ] DIVCNT2 - Counting Divisors (square) 积性函数前缀和
题面 题目要我们求∑i=1nσ0(i2)\sum_{i=1}^n\sigma_0(i^2) 把ii分解质因数pα11∗pα22...pαkkp_1^{\alpha_1}*p_2^{\alpha_2}...p_k^{\alpha_k} 就是求∑i=1n∏j=1k(2αj+1)\sum_{i=1}^n\prod_{j=1}^k(2\alpha_j+1) 考虑每个乘式选2αj2\alpha_j还原创 2018-01-11 23:34:48 · 1090 阅读 · 0 评论 -
[BZOJ3679]数字之积 数位DP
首先还是ANS[L,R)=ANS[1,R-1]-ANS[1,L-1]。 f[i][j][0/1]表示从高到低填到第i位,积为j的个数。 不过j太大了,但我们发现数字之积分解质因数只可能有2,3,5,7。于是设计状态f[i][c2][c3][c5][c7][0/1],c2,c3,c5,c7表示它们的次数。这样复杂度为O(log2N*log3N*log5N*log7N*18)。 不过hash的话状原创 2017-10-17 19:13:36 · 359 阅读 · 0 评论 -
[NOI2002]Sevege 扩展欧几里得
枚举答案m,对于每两个野人,同余方程(Ci-Cj)+x(Pi-Pj)=0(mod m)无解或最小正整数解大于min(Li,Lj)即可。注意m从maxCi开始枚举。 错点:exgcd中y=y-x*(a/b)最初没打括号。 代码:#include<iostream>#include<cstdio>#include<cmath>using namespace std;int n,c[20],p原创 2017-10-19 22:22:11 · 564 阅读 · 0 评论 -
[BZOJ2186][SDOI2008]沙拉公主的困惑 欧拉函数
为什么一开始我再用容斥+莫比乌斯函数乱推。。。 答案即为φ(m!)*n!/m!,考虑gcd(x,y)==gcd(x+y,y),所以关于某个数x互质的数是以x为长度的循环节,因为m!|n!,所以恰好n!/m!个完整的循环节。 预处理阶乘,和φ(m!)*m!(用φ的公式计算),其实后者也可O(n)预处理。 代码:#include<iostream>#include<cstdio>#define原创 2017-10-19 22:28:09 · 233 阅读 · 0 评论 -
[BZOJ2721]樱花 阶乘标准分解式
首先根据并联电路电阻的关系(逃,得到y>n!。 设y=n!+d,解得x=(n!)^2/d+d,所以只要d|n!即可。 于是筛出素数,n!中素因子pi的次数为[n/p]+[n/p^2]+[n/p^3]….,按这个方法对n!分解。最终答案即为n!的因数个数,为Π(2*pi+1)。 代码:#include<iostream>#include<cstdio>using namespace std;原创 2017-10-19 22:35:22 · 774 阅读 · 0 评论 -
[BZOJ3884]上帝与集合的正确用法 欧拉函数
求ANS=2^2^2^2^2…mod p的值。 设ANS=2^n,假设2^k||p,那么2^(n-k)=ooo (mod p/2^k) ,ANS=ooo*2^k<满足欧拉定理的条件,于是2^((n-k)%φ(p/2^k))=ooo (mod p/2^k) 转化为求n%φ(p/2^k),因为n和ANS都是相同形式,递归即可。边界是p==1是返回0。 代码:#include<iostream>#i原创 2017-10-19 22:43:05 · 268 阅读 · 0 评论 -
[2017纪中10-30]Matrix 二分答案+数论
题面 80pts考场做法: 考虑每个数在矩形中的出现次数。x的出现次数为max(0,x的<=m的约数个数+x的<=n的约数个数-x的约数个数),不妨设n>=m,而且询问的k<=max(n,m)=n,x肯定也<=n。所以x的出现次数即为x的<=m的约数个数。把每个数的约数表预处理出来,再搞个前缀和什么的。对于每个询问二分查找lower_bound一下即可。 代码:#include<iostrea原创 2017-10-30 18:58:02 · 443 阅读 · 0 评论 -
[2017纪中10-31]Calculate 数论
题面 考虑二分答案T。问题转化成如何高效计算S(T)。 化式子: 分开来除,加上他们的余数和的贡献。 发现Ai最大1000,考虑把(Ai,Bi)按照Ai分类,每一类维护cnt,sum,rst[0~Ai-1],分别表示数对的个数,(-Bi)/Ai的和,(-Bi)%Ai取值的前缀和,那么对于每一个Ai都可以O(1)计算,对于每个查询O(1000*log10^12)。 修改直接暴力修改即可,原创 2017-10-31 16:00:04 · 268 阅读 · 0 评论 -
[2017纪中10-23]公交运输 DP+斜率(玄学)优化
题目链接:https://jzoj.net/senior/#main/show/5415 首先可以推出n^2的DP方程:F[i]=min{F[j]+(i-j)/C[i]*V[i]} (C[i]|(i-j))。 我们发现靠前的 dp 值对之后 dp 值的贡献是一个形如一条直 线(一次函数)的形式。这样我们在计算后面的 dp 值时,就是找到之 前所有可能转移到这个点的所有直线在当前横坐标的最小值原创 2017-10-23 21:12:10 · 331 阅读 · 0 评论 -
[BZOJ4488][JSOI2015]最大公约数 DP+STL
一个数的约数大概是log级的,那么右端点确定的若干区间的gcd最多也只有log种。显然,右端点确定时,随着左端点递增,gcd是不降的。 从左往右DP,对于每种以当前点为右端点的区间gcd的取值,记录左端点最左可以延伸到哪。用map搞个映射就好了。复杂度O(nlog^2n) 代码:#include<iostream>#include<cstdio>#include<cstring>#incl原创 2017-11-01 07:58:09 · 631 阅读 · 0 评论 -
[2017纪中11-9]乘积 数论+分组背包
题面 70分显然可以状压每个数分解质因数的情况,DP即可。 正解:考虑一个<=n的数最多有一个>=sqrt(n)的质因子,我们按这个大质因子相同的数分在一组,显然一组中最多选一个,<=sqrt(n)的质因子只有8个,状压即可。f[i][j][s]表示前i组选了j个数,当前乘积分解质因数为s的答案,转移即可。 代码:#include<iostream>#include<cstdio>#inc原创 2017-11-10 15:20:54 · 323 阅读 · 0 评论 -
[2017纪中11-2]失格 最小生成树+数论
题面 正解 考场100pts乱搞做法: 首先先去重。 最小生成树从小到大加进边去是没有问题的,于是考虑枚举边长(余数)k,再枚举数a[i],再枚举倍数j,如果a[i]*j+k存在,则连一条边长为k的边,直到合并成数为止。 复杂度O(maxk*nlogP),不知道为什么跑得飞快,比O(nlogP)的正解跑的还快,貌似maxk *n大概是P级别的,此消彼长的那种。。。再加上常数小吧。。。加上x原创 2017-11-02 20:01:50 · 319 阅读 · 0 评论 -
[2017纪中10-26]数论 结论题
题面 打表发现,答案就是 n*m mod p。 其实,原式的物理意义,就是从坐标原点(0,0),用每一种合 法的斜率,穿过坐标[1~n,1~m]的方阵中的整点的个数,总数即 n*m。 代码:#include<iostream>#include<cstdio>using namespace std;int main(){ freopen("math.in","r",stdin原创 2017-10-26 16:10:09 · 363 阅读 · 0 评论 -
[2017纪中11-4][Codeforces Round #395 Div.1]C pacifist
题面 坑待填。原创 2017-11-05 21:01:51 · 272 阅读 · 0 评论 -
min_25筛学习小记
终于在考试中碰到了一题不能用杜教筛的函数,被迫来学这个。。。概述首先这个函数f(x)f(x)f(x)要求是积性函数,而且f(p)f(p)f(p)和f(pc)f(pc)f(p^c)都要很好计算,设一个“假的”f′(x)f′(x)f'(x)表示把xxx直接当成质数时的f(x)f(x)f(x),f′(x)f′(x)f'(x)是(或者能拆成)完全积性函数(比如说简单多项式),且∑ni=1f′(...原创 2018-07-04 22:02:41 · 673 阅读 · 1 评论