----数论
扩展的灰
扩展的灰(Extended Ash)
展开
-
一些反演求和过程?
.问题∑i,j&lt;=niaja(i,j)b\sum_{i,j&lt;=n}i^aj^a(i,j)^bi,j<=n∑iaja(i,j)b记f(d)=∑(i,j)=diajaF(d)=∑d∣i,d∣jiajaf(d)=\sum_{(i,j)=d}i^aj^a \\ F(d)=\sum_{d|i,d|j}i^aj^af(d)=(i,j)=d∑iajaF(d)=d∣i,d∣...原创 2019-01-18 22:38:30 · 434 阅读 · 1 评论 -
Jzoj5421 嘟嘟噜
由于众所周知的原因, 冈部一直欠真由理一串香蕉.为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉:一开始有n 个人围成一个圈, 从1 开始顺时针报数, 报出m 的人被机关处决. 然后下一个人再从1 开始报数, 直到只剩下一个人.红莉栖: “这不就是约瑟夫问题吗...”伦太郎: “助手你给我闭嘴!”真由理虽然已经晕头转向了, 但听到有一车的香蕉, 两眼便放出了光芒.约瑟夫...原创 2017-11-07 16:37:06 · 412 阅读 · 0 评论 -
Bzoj1004 [HNOI2008]Cards
小春现在很清闲,面对书桌上的N张牌,他决定给每张染色,目前小春只有3种颜色:红色,蓝色,绿色.他询问Sun有多少种染色方案,Sun很快就给出了答案.进一步,小春要求染出Sr张红色,Sb张蓝色,Sg张绝色.他又询问有多少种方案,Sun想了一下,又给出了正确答案. 最后小春发明了M种不同的洗牌法,这里他又问Sun有多少种不同的染色方案.两种染色方法相同当且仅当其中一种可以通过任意的洗牌法(原创 2018-01-25 16:33:10 · 294 阅读 · 0 评论 -
(各种)FFT模板
先来一个标准的归并版FFT 2881ms#include#include#include#include#define D doubleusing namespace std;struct Z{ D x,y; } a[280010],b[280010],z[280010];inline Z operator+ (Z x,Z y){ return (Z){x.x+y.x,x.y原创 2018-01-23 11:31:05 · 267 阅读 · 0 评论 -
Jzoj5317 Func
f(1)=1 f(2x)=f(x) f(2x+1)=f(x)+f(x+1) 给出n第一道类欧算法我们考虑一个性质 f(2x+1)=f(x)+f(x+1)=f(2x)+f(2x+2)所以,显然有f(2x+1)>f(2x) f(2x+1)>f(2x+2)那么现在我们知道了f(2x+1),自然考虑枚举一个f(2x)可以按照以下形式转移:f(2x+1),f(2x)->f(x原创 2018-01-22 19:11:48 · 273 阅读 · 0 评论 -
Jzoj3590 珠链
Alex喜欢玩网络游戏,认为这是智力和体力的综合锻炼。在一次游戏活动中,他意外获得了一个传说中威力极其强大的法宝:珠链。 珠链,顾名思义,就是由许多小珠子串起来的一条链。珠子有很多种颜色。Alex听说过,只有将珠链打磨纯净,珠链才能发挥最大的威力。 纯净珠链是指这样的珠链:它可以分成若干个长度相等的段,使任何两段的任何相同位置的珠子的颜色均不同,相同位置指珠子在段内的相对位置相同;而且每段原创 2018-01-22 18:54:25 · 285 阅读 · 0 评论 -
Jzoj3020 最多的约数
WZK是个数学狂热爱好者。最近他又想出了一道题目来考大家。题目很简单,给定一个正整数n,对于所有不超过n的正整数,找到包含约数最多的一个数。如果有多个这样的数,那么回答最小的那个。直接dfs即可,注意两个地方要优化:1.按照素数表的顺序递增枚举 2.每个数的幂次递减,按照贪心原则就可以知道#include#define L long longint w[500000],t;boo原创 2017-12-21 17:16:05 · 453 阅读 · 0 评论 -
Jzoj4757 树上摩托
Sherco是一位经验丰富的魔♂法师。Sherco在第零次圣杯战争中取得了胜利,并取得了王之宝藏——王の树。他想把这棵树砍去任意条边,拆成若干棵新树,并装饰在他的摩托上,让他的摩托更加酷炫。但Sherco认为,这样生成的树不具有美感,于是Sherco想让每棵新树的节点数相同。他想知道有多少种方法分割这棵树。首先一个很显然的结论是,每块的大小一定是n的约数,对于一种块的大小,原创 2017-11-23 22:08:21 · 456 阅读 · 0 评论 -
Jzoj4786 小a的强迫症
小a是一名强迫症患者,现在他要给一群带颜色的珠子排成一列,现在有N中颜色,其中第i中的颜色的珠子有s[i]个,要求排列中第i种颜色的最后一个珠子一定要排在第i+1种颜色的最后一个珠子前面,问有多少种方案 ΣS组合数学法,一种一种颜色来排,我们发现对于一种颜色i,相当于在前面所有的空位种选出s[i]-1个,这个可以用组合数计算,其值为C(-1+Σs[i],s[i]-1),组合数我们可以用阶乘+逆原创 2017-11-23 21:06:02 · 490 阅读 · 0 评论 -
Jzoj4906 组合数问题
题意:noip2016d2t1我们考虑将每个数字质因数分解来做即可线性筛求出所有2000以内的质数让后直接暴力分解即可,计算C(i,j)是否为k的倍数,最后加上前缀和#include#includeint w[500],c=0,n,m,t,k,pr[2010]={0};int l[2010],f[2010][10][2];int s[2010][2010],S[2010][原创 2017-11-14 21:30:38 · 296 阅读 · 0 评论 -
Jzoj4922 环
小A有一个环,环上有n个正整数。他有特殊的能力,能将环切成k段,每段包含一个或者多个数字。对于一个切分方案,小A将以如下方式计算优美程度:首先对于每一段,求出他们的数字和。然后对于每段的和,求出他们的最大公约数,即为优美程度。他想通过合理地使用他的特殊能力,使得切分方案的优美程度最大。对于100%的数据,n令s=Σai那么显然,优美程度必然为s的因数这样我们可以枚举s的所有原创 2017-11-14 21:20:26 · 294 阅读 · 0 评论 -
Jzoj5449【NOIP2017提高A组冲刺11.4】Pacifist
papyrus 喜欢谜题... 来解一道如何?在你面前有一个被加密了的数组,其原数组是一个等差序列,你面前的则是将原数组中的所有数字都对m 取模再打乱后而得到的新数组papyrus 给你出的谜题就是还原出原等差序列a保证数据有解,而且因为papyrus 喜欢质数,所以他给你出的谜题中的m 一定是质数今天题目还挺好玩的,虽然第二题因为数据太多OJ最后挂了全场爆0但是还原创 2017-11-04 21:22:54 · 306 阅读 · 0 评论 -
Jzoj5236 利普希茨
对于一个整数序列A,我们定义f(A)=max{floor(|Ai-Aj|/(j-i))},这里i给出一个长度为n的序列A,有q此操作1.修改一个元素的值2.询问A的一段区间[l,r]组成的序列的f(A[l..r])这里有一个很显然的结论,那就是使得f取到最大的i,j一定满足j=i+1为什么?可以证明一下,以下证明来自jefflyy:函数"用归纳法,若(长度为2⋯原创 2017-11-17 20:11:44 · 617 阅读 · 0 评论 -
51Nod1528 加号分配
题目看这里考虑单独计算每个位置的贡献一个位置i的贡献为c[i]*10^k当且仅当它后面连续(k-1)个数前都没有加号那么也就是确定了k个位置的情况,剩下的位置未知,用组合数计算即可注意到当k相同时很多位置的系数是一样的,可以前缀和降低复杂度至O(n)#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include原创 2018-02-22 21:59:04 · 279 阅读 · 0 评论 -
51Nod1678 lky与gcd
题目看这里本来以为是一个离线做的题目结果发现数据小可乱搞预处理f[i]表示Σa[ki],预处理每个i的因子集合s[i]每次修改位置i,即为将所有的f[s[i]]都修改每次求和,答案为Σmu[i]*f[i] mu为莫比乌斯函数复杂度O(n√n)#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#includ原创 2018-02-22 21:28:52 · 252 阅读 · 0 评论 -
Jzoj5636 Power
近期没有写过博客感觉要死了->重返jz深造一道区间查询的问题,因为模数不是质数,我们考虑利用指数循环节这个东西:x^k=x^(k%phi(M)+phi(M))%M 这里要求k>=phi(M)那么可以写成Ans[l,r]%M=x^(Ans[l+1,r]%phi(M))%M由于phi的迭代会在logn次收敛为1,所以我们可以直接递归来做先用线性筛筛出10^7以内的phi值,大过这个的就分解...原创 2018-04-17 19:59:10 · 270 阅读 · 0 评论 -
UOJ62 怎样跑的更快
bi=∑j=1n(i,j)c−d∗idjdzjb_i=\sum_{j=1}^n(i,j)^{c-d}*i^dj^dz_jbi=j=1∑n(i,j)c−d∗idjdzjbiid=∑j=1nzjjd(i,j)c−d\frac{b_i}{i^d}=\sum_{j=1}^nz_jj^d(i,j)^{c-d}idbi=j=1∑nzjjd(i,j)c−d记(i,j)=x,Bi=biid,Zi=...原创 2019-01-18 21:29:40 · 466 阅读 · 0 评论 -
51Nod1038 X^A Mod P
题目看这里 经典的n次剩余问题,用到很多数论知识点 1.扩展gcd 2.原根 3.离散对数 4.n次剩余 说一下这个算法的流程 首先,我们的方程为xn=a(mod&amp;nbsp;m)xn=a(mod&amp;nbsp;m)x^n=a(mod\ m) m为质数 那么,我们首先要找m的原根g,这里g要满足的性 质就是对于任意&amp;lt;fontsize=8&amp;gt;&amp;lt原创 2018-08-02 09:54:28 · 349 阅读 · 0 评论 -
51Nod2026 Gcd and Lcm
题目看这里 一个非常好的题! 好的,看到题目就很懵逼 首先这个f不就是ϕϕ\phi吗,认真一看才发现不对 让后问题?f(lcm)*f(gcd)? 肯定有问题,推了一会没有结论,去看看题解: 有这么一个神奇结论f(gcd(x,y))∗f(lcm(x,y))=f(x)∗f(y)f(gcd(x,y))∗f(lcm(x,y))=f(x)∗f(y)f(gcd(x,y))*f(l...原创 2018-08-02 09:32:13 · 248 阅读 · 3 评论 -
51Nod1192 Gcd表中的质数
题目看这里 又到了推式子的时候了,莫比乌斯反演入门题 ∑i=1n∑j=1m[prime(i,j)]∑i=1n∑j=1m[prime(i,j)]\sum_{i=1}^n\sum_{j=1}^m[prime(i,j)] 首先搞一个f(d)f(d)f(d)表示有多少对(i,j)的gcd就是d 那么原式=∑nd=1[prime(d)]∗f(d)=∑d=1n[prime(d)]∗f(d)=...原创 2018-08-02 09:12:06 · 323 阅读 · 0 评论 -
51Nod1239 欧拉函数之和
题目看这里 最近才学的杜教筛,顺便就写一写模板题吧 杜教筛简易教程 直接上代码了 #include&amp;lt;map&amp;gt;#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;string.h&amp;gt;#include&amp;lt;algorithm&amp;gt;#define N 1000原创 2018-08-02 08:49:19 · 303 阅读 · 0 评论 -
51Nod1594 Gcd and Phi
题目看这里 一个简单的反演题目: ∑i=1n∑j=1nϕ(gcd(ϕ(i),ϕ(j)))∑i=1n∑j=1nϕ(gcd(ϕ(i),ϕ(j)))\sum_{i=1}^n\sum_{j=1}^n\phi\bigg(gcd(\phi(i),\phi(j))\bigg) 首先做一下变换 ∑ni=1∑nj=1ϕ(gcd(ϕ(i),ϕ(j)))∑i=1n∑j=1nϕ(gcd(ϕ(i),ϕ(j)))...原创 2018-07-27 20:18:35 · 355 阅读 · 0 评论 -
[笔记]杜教筛核心原理
∑ni=1∑mj=1gcd(i,j)∑i=1n∑j=1mgcd(i,j)\sum_{i=1}^n\sum_{j=1}^mgcd(i,j) =∑nd=1d∗f(d)=∑d=1nd∗f(d)=\sum_{d=1}^nd*f(d) =∑nd=1d∗∑d|jμ(j/d)∗F(d)=∑d=1nd∗∑d|jμ(j/d)∗F(d)=\sum_{d=1}^nd*\sum_{d|j}\mu(j/d)*F(d) ...原创 2018-07-29 18:43:34 · 425 阅读 · 0 评论 -
51Nod1037 最长的循环节 V2
题目看这里 小学奥数题目23333 首先我们知道,0.0˙0...001˙=1/99..90.0˙0...001˙=1/99..90.\dot00...00\dot{1}=1/99..9 那么任意一个循环小数都可以写成以10k−110k−110^k-1为分母的分数 让后稍加分析就知道,满足条件的最小的k就是循环节的长度 那么题目就变成了求一个数s,使得满足10k=1 ...原创 2018-07-28 23:17:17 · 403 阅读 · 0 评论 -
51Nod1190 最小公倍数之和 V2
题目看这里繁衍反演真好玩来看看这个题的式子求Σlcm(i,b) (a<=i<=b)首先不难发现以下这样的变换让后做一下差分就得到答案,注意这题比较卡时间,需要比较好的优化#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include<stdio.h>#include<string.h>#inclu...原创 2018-05-15 22:08:58 · 401 阅读 · 0 评论 -
51Nod1537 分解
题目看这里基于一个思想,如果x=y+1 那么一定有x%M=y+1%M可以发现1+√2和复数有着类似的运算法则,可以用快速幂加取模来计算所以我们考虑用几个不同的模数来判断,如果都有x=y+1,那么就可以认为问题有解#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include<stdio.h>#include<stri...原创 2018-04-27 21:42:02 · 218 阅读 · 0 评论 -
51Nod1225 余数之和
题目看这里数论好题我们以前在做反演的时候,常常用到一个叫做分块除法的东西具体来说,[n/i]只会有不超过√n种取值那么这题也可以这样做 因为n%i=n-[n/i]*i我们可以对i分块,对于[n/i]取值相同的一起计算,那么每次就是一个等差数列求和,总复杂度O(√n)#include<stdio.h>#include<string.h>#include<algori...原创 2018-04-27 19:45:24 · 249 阅读 · 0 评论 -
Jzoj4900 平方数
noip爆炸啦,继续写jzoj的题吧一个数如果是另一个整数的完全平方,那么我们就称这个数为完全平方数(perfect square),也称平方数。小A认为所有的平方数都是很perfect的~于是他给了小B一个任务:用任意个不大于n的不同的正整数相乘得到完全平方数,并且小A希望这个平方数越大越好。请你帮助小B告诉小A满足题意的最大的完全平方数。由于答案可以很大, 所以原创 2017-11-12 20:36:54 · 405 阅读 · 0 评论 -
一些基础算法的模板(持续更新)
更新中//Templates From Extended_Ash/Cooevjnz/JacaJava/Tubbcrafft//To be continued...//Suffix Automationchar str[N]; int s[N][26],mx[N],f[N],sz[N]; int last=1,cnt=1,n,v[N],r[N],ans=0; inlin原创 2017-10-25 22:05:58 · 3750 阅读 · 0 评论 -
Jzoj2756 Longge的问题
做法可以参考这篇:jzoj2581,注意求phi(i)的方法,需要用到sqrt(i)的暴力分解算法#includebool vis[40010];int w[20010],t=0;long long phi(int x){ long long S=x; for(int i=0;w[i]*w[i]<=x;++i){ if(x%w[i]==0) for(S=S/w[i]*(w[原创 2017-09-20 20:45:35 · 244 阅读 · 0 评论 -
Jzoj2581 最大公约数
sum:=0; for i:=1 to n-1 do for j:=i+1 to n do sum:=sum+gcd(i,j)显然这个程序的效率是很低的,小明打算写一个更强的程序,在求出sum的同时比妹妹跑的更快。我们令A[i]为Σgcd(i,j)(j∈[1,i])那么很显然的,gcd(i,j)为i的因数,而当gcd(i,j)=1时,原创 2017-09-20 20:40:27 · 440 阅读 · 0 评论 -
Jzoj2270 【SDOI2011】计算器
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)的最小非负整数 。第一问不说,第二问请看 同余方程 主要说第三问第三问是经典的离散对数(其实我并不会而且也基本不考)我们使用经典的giant-step-baby-step算法,令s=sqrt(m)原创 2017-09-20 20:06:42 · 248 阅读 · 0 评论 -
Jzoj1460 无题noname
给定一个N,求出所有1到N之间的x,使得x^2=1(mod N)。将这个式子变形(x-1)(x+1)=0(MOD P) ,那么就可以枚举P的每一对因数(a,b),我们把方程化为ax*by=P*T(T为任意常数)那么这里ax,by必须满足ax-by=2,这个可以用扩展gcd求解求出x,y后,我们将所有形如a*(x*(2/gcd)+k*(b/r))的解加入vector并排序输出(注原创 2017-09-20 19:34:15 · 319 阅读 · 0 评论 -
Jzoj1164求和
若两个数的最大公约数为1,则这两个数互质。现在给出一个正整数N(1是不是很像欧拉函数呢没错,我们发现,对于i,若有gcd(i,n)=1则必有gcd(n-i,n)=1,所以互质的数是成对出现的!正好,φ(N)也必然是一个偶数所以answer=N*φ(N)/2求φ(N)可以用sqrt(N)的方法,这里不多讲#includeint N,M,K;int main(){ s原创 2017-09-19 19:43:05 · 460 阅读 · 0 评论 -
Jzoj1306 Sum
先预处理出取模后的前缀和s,那么问题变成min(s[j]-s[i]%P)且s[j]-s[i]%P>=k把s序列反过来作,对于每个数s[i],维护一个set存有s[i]+1~s[……原创 2017-09-19 21:12:53 · 495 阅读 · 0 评论 -
扩展gcd以及同余方程ax=b(mod M)
关于扩展gcd其实没有必要搞懂,背下来就好了如果不会的自行学习对于方程ax=b(mod M),我们可以将其化简成为ax+My=b,让后用扩展gcd求解当b|r=gcd(a,M)时,方程有r个解,否则无解,对于有解的情况,每个解为用gcd求出的x乘上b/r+k*(M/r)int extgcd(int a,int b,int& x,int& y){ if(b){ int r=extg原创 2017-09-19 18:48:56 · 2077 阅读 · 0 评论 -
Jzoj1158荒岛野人
正解:同余方程对于每对野人i,j,解方程(p[i]-p[j])=c[j]-c[i](mod Answer) 若在min(l[i],l[j])以内有解则不行(++ANS)否则可以#include#includeusing namespace std;int c[20],p[20],l[20],n,M;int extgcd(int a,int b,int& x,int& y){原创 2017-09-19 18:47:19 · 588 阅读 · 0 评论 -
Jzoj4832 高维宇宙
我们注意到有ai>1,所以,ai+aj为质数当且仅当两者奇偶性不同我们可以以此将这个图变成一个二分图跑匈牙利算法即可(这个题n只有40害得我想了半天状压dp和折半搜索,坑。。。)#pragma GCC optimize("O3")#pragma G++ optimize("O3")#include#include#include#include#define N 100原创 2017-10-29 19:04:24 · 539 阅读 · 0 评论 -
Jzoj4745 看电影
听说NOIP2016大家都考得不错,于是CCF奖励省常中了 K 张变形金刚5的电影票奖励OI队的同学去看电影。可是省常中OI队的同学们共有 N(N >= K)人。于是机智的你想到了一个公平公正的方法决定哪K人去看电影。N个人排成一圈,按顺时针顺序标号为1 - N,每次随机一个还存活的人的编号,将这个人踢出。继续上述操作,直到剩下K个人。但这样显然太无聊了,于是小S又想出一个牛逼的方法。原创 2017-10-23 19:37:55 · 367 阅读 · 0 评论 -
Jzoj4744 同余
线段树套分块/主席树!我们考虑到ai,p,q比较小(若p较大,则kp+q的数量就比较少,可以暴力枚举若p较小,可以预处理,令g[i][j]表示膜i余j的数的个数我们取这个界为sqrt(maxp)=100将询问放到每个节点上,依次处理处[1,i]的答案最后ans(l,r)=ans(r)-ans(l-1)即可#pragma GCC optimize("O3")#pragm原创 2017-10-23 19:28:56 · 399 阅读 · 0 评论