![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
ssss
crazy morning
去西之西处,驾驭长风
展开
-
2021牛客OI赛前集训营-提高组(第四场)B 空间跳跃
题目题目思路考虑倒着跑,再去掉操作1,然后就变成了冰雹……但是负数会出环……所以我们需要用操作1把负数变成正数考虑环的最低点可以在哪,经暴力后发现有0,-1,-5,-17然后直接上操作1,接下来再继续冰雹,然后A了赛时90就离谱……遗憾总rank 8code:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring&原创 2021-10-12 21:15:59 · 260 阅读 · 0 评论 -
P7854 「EZEC-9」GCD Tree
题目题目思路牛马题终于A了交了至少30发首先可以去重,把所有权值相同的点搞成一条链,如果要加个儿子就加在最后面的点上显然有的是有解时的树的形状:每个点的父亲是其所有出现的因子中最大的所以有一个结论:去重后的树高最大lognlognlogn接下来发现一些用来判-1的性质:首先,如果所有的gcd没出现,显然-1接下来,如果某个数有2个因子都出现了,而且这2个因子直接不是直接的祖先关系,就是意味着这个数既要在这个因子下面,又要在那个因子下面,而这两个因子又没有共同的子树,所以这玩意没得放,-原创 2021-09-09 20:47:41 · 140 阅读 · 0 评论 -
P7298 [USACO21JAN] Dance Mooves G
题目题目思路赛时刚T4就是赌博,赢了皆大欢喜,输了一败涂地。结果赌了2天天天涂地……总分77.7pts……myd从来不赌,结果200+……也许我也该戒赌了??提一嘴wj,52pts本题非常好想,非常不好写……可以发现通过置换构造环,然后考虑次数,如果做得够多,可以遍历整个环。否则GG滑动窗口搞code:#include<iostream>#include<cstring>#include<cstdio>#include<algorit原创 2021-08-17 20:40:32 · 129 阅读 · 0 评论 -
P4195 【模板】扩展BSGS
题目题目思路先把exBSGS变成普通BSGS。我们这样做:ax≡b( mod c)=>ax+cy=ba^x\equiv b(\bmod~c)=>a^x+cy=bax≡b(mod c)=>ax+cy=b接下来我们不停地除a,c的最大公约数(d1)。b1=ad1ax−1+c1yb_1={a\over d_1}a^{x-1}+c_1yb1=d1aax−1+c1y我们接下来接着除gcd(a,c1)=d2b2=a2d1d2ax−2+c2yb_2={a^原创 2021-06-19 11:54:48 · 123 阅读 · 0 评论 -
P4727 [HNOI2009]图的同构计数
题目题目思路这是here的简化版,把m换成了2注意long longcode:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;long long a[80],ans,n,b[80]; long long ksm(long long x,long long y){原创 2021-06-15 20:49:17 · 162 阅读 · 0 评论 -
P4128 [SHOI2006] 有色图
题目题目思路使用polya引理。1∣G∣=1n!{1 \over |G|}={1\over n!}∣G∣1=n!1而轮换总方案数为n!∏bi∏c!n!\over \prod b_i \prod c!∏bi∏c!n!所以最后的式子是∑b1∏bi∏c!m∑i<jgcd(i,j)\sum_b{1\over \prod b_i \prod c!}m^{\sum_{i<j}gcd(i,j)}∑b∏bi∏c!1m∑i<jgcd(i,j)dfs解决code:#inclu原创 2021-06-15 20:46:59 · 491 阅读 · 0 评论 -
P1446 [HNOI2008]Cards
题目题目思路polya显然不可做,原因是本题有颜色限制。使用burnside引理,用dp解决某个置换下的结果并求和。然后费马小定理求m+1的逆元,和上面的结果相乘。m+1是m个给定置换加一个恒等置换。dp设fa,b,cf_{a,b,c}fa,b,c为a个红,b个蓝,c个绿的结果。显然有f0,0,0=1f_{0,0,0}=1f0,0,0=1又有fa,b,c=fa−第i个轮换长度,b,c+fa,b−第i个轮换长度,c+fa,b,c−第i个轮换长度(做得到的情况下)f_{a,b,c}=f_{原创 2021-06-15 20:38:02 · 109 阅读 · 0 评论 -
P1771 方程的解
题目题目思路a1+a2+…+ak=xx mod 1000a_1+a_2+…+a_k=x^x\bmod1000a1+a2+…+ak=xxmod1000啊先看这个式子的右边xx mod 1000x^x\bmod 1000xxmod1000,显然快速幂,完成这部分以后我们设右边为nnn再考虑左边:我们把这个问题抽象成共nnn个1,排成一排,我们要把他们分成kkk个部分,问方案数。我们考虑插板法,把k−1k-1k−1个板子插到n−1n-1n−1个空隙中,那么每一段的和就是aaa数组。那么方案数原创 2021-06-02 17:08:31 · 76 阅读 · 0 评论 -
[SDOI2010]古代猪文
题目题目思路999911659=2∗3∗4679∗35617999911659=2*3*4679*35617999911659=2∗3∗4679∗35617题目要求g∑d∣nCndmod 999911659mod 999911659g^{\sum _{d|n}C_n^d \mod 999911659} \mod 999911659g∑d∣nCndmod999911659mod999911659若gmod 999911659=0g\mod 999911659=0gmod999911659=原创 2021-05-21 21:18:27 · 50 阅读 · 0 评论 -
《ybtoj高效进阶》第六部分第四章例题2 方案统计
题目大意给n,m,求Cnmmod 10007C_n^m \mod 10007Cnmmod10007多组数据思路Lucas定理Cnm≡Cnmod pmmod pmod pC_n^m\equiv C_{n \mod p}^{m\mod p}\mod pCnm≡Cnmodpmmodpmodp运用即可code:#include<cstdio>#include<algorithm>#include<cmath>#include<iostre原创 2021-05-21 20:34:40 · 194 阅读 · 0 评论 -
《ybtoj高效进阶》第六部分第二章例题3 不定方程
题目大意给nnn,求满足1x1\over{x}x1+++1y1\over yy1===1n!1\over n!n!1的正整数解数目思路y=y=y=xn!x−n!xn!\over x-n!x−n!xn!,设t=x−n!t=x-n!t=x−n!,则y=n!+n!2ty=n!+{n!^2\over t}y=n!+tn!2转化为求n!的约数个数。n!2n!^2n!2的约数个数为∏i=1m(ci∗2+1)\prod_{i=1}^{m}(c_i*2+1)∏i=1m(ci∗2+1),其中cic_i原创 2021-05-20 16:48:39 · 145 阅读 · 0 评论 -
P1463 [POI2002][HAOI2007]反素数
题目题目思路1 ~ N的最大反素数,可以理解为1 ~ N中约数最多的数中最小的一个,可据此暴力DFS考虑该数的质因数分解,显然其指数总和必然<31,因为231>2∗1092^{31}>2*10^9231>2∗109,类似可得不同质因数个数必<11。我们考虑什么情况下更快地枚举约数相同情况下的最小值。显然质因数必须是从2开始的连续值。同时因为约数相等,所以指数要单调递减。最后是一个小卡常:该范围内每个质因数的指数大小<10code:#include<原创 2021-05-20 16:31:36 · 44 阅读 · 0 评论 -
P1313 [NOIP2011 提高组] 计算系数
题目题目思路直接二项式定理即可(不会请出门左转BDFS)code:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>using namespace std;long long ksm(long long x,long long y){ long long ans=1; while (y) { if原创 2021-05-19 16:50:09 · 190 阅读 · 0 评论 -
P1447 [NOI2010] 能量采集
题目题目思路一句话题意:2∑ni=1∑mj=1gcd(i,j)−n∗m2\sum^{i=1}_{n}\sum^{j=1}_{m}gcd(i,j)-n*m2∑ni=1∑mj=1gcd(i,j)−n∗m∑ni=1∑mj=1gcd(i,j)=>∑min(n,m)i=1ϕ(i)∗(n/i)∗(m/i)\sum^{i=1}_{n}\sum^{j=1}_{m}gcd(i,j)=>\sum^{i=1}_{min(n,m)}\phi(i)*(n/i)*(m/i)∑ni=1∑mj=1gcd(i,j原创 2021-05-15 11:38:13 · 60 阅读 · 0 评论 -
P4777 【模板】扩展中国剩余定理(EXCRT)
题目题目思路板子不解释code:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring> using namespace std;long long n;long long a[100005],m[100005],M=1,ans,x,y;long long gscf(long long x,long long原创 2021-05-15 11:08:50 · 69 阅读 · 0 评论 -
P4139 上帝与集合的正确用法
题目题目思路求222…mod p2^{2^{2^{…}}}\mod p222…modp。显然有伟大先哲告诉我们:abmod p=abmod ϕ(p)+ϕ(p)(b>=ϕ(p))a^b\mod p=a^{b\mod \phi(p)+\phi(p)}(b>=\phi(p))abmodp=abmodϕ(p)+ϕ(p)(b>=ϕ(p))然后就代入直接算就好了,建议用非筛法求ϕ\phiϕcode:#include<iostream>#include<cstdi原创 2021-05-15 10:25:32 · 97 阅读 · 0 评论 -
P5431 【模板】乘法逆元2
题目题目思路前缀积线性求逆元即可。设要求a1,a2,a3,…,ana_1,a_2,a_3,…,a_na1,a2,a3,…,an的逆元。那么设si=si−1∗ais_i=s_{i-1}*a_isi=si−1∗ai,我们求sns_nsn的逆元,则1si1\over{s_i}si1可线性递推,进一步可得出1ai1\over{a_i}ai1code:#include<iostream>#include<algorithm>#include<st原创 2021-05-15 10:02:09 · 134 阅读 · 0 评论 -
P1516 青蛙的约会
题目题目思路显然x+km+qL=y+knx+km+qL=y+knx+km+qL=y+kn=>k(n−m)+qL=y−x=>k(n-m)+qL=y-x=>k(n−m)+qL=y−x然后exgcd即可(要判无解)code:#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<cstring>#include&l原创 2021-05-15 09:54:10 · 141 阅读 · 0 评论 -
UVA12716 GCD等于XOR
题目题目思路又是一道结论即题目的好题\jk证:若题目式子成立则有ixorj==i−j(i>j)i xor j==i-j(i>j)ixorj==i−j(i>j)显然ixorj>=i−j,gcd(i,j)<=i−jixorj>=i-j,gcd(i,j)<=i-jixorj>=i−j,gcd(i,j)<=i−j...原创 2021-05-15 09:47:21 · 63 阅读 · 0 评论 -
P5253 [JSOI2013]丢番图
题目题目思路显然,式子可化为(x−n)(y−n)=n2(x-n)(y-n)=n^2(x−n)(y−n)=n2。问题转换成n2n^2n2的约数个数/2上取整。所以,我们使用唯一分解定理的推论,n2n^2n2的分解后的式子相当于n的分解后式子每一项的指数*2,就可以过了复杂度O(n)O(\sqrt n)O(n)code:#include<iostream>#include<cstdio>#include<algorithm>#include<cm原创 2021-05-15 08:27:03 · 75 阅读 · 0 评论 -
P5495 Dirichlet 前缀和
题目题目思路由唯一分解定理可知,只有i的所有指数都比k对应的所有指数小,i才对k做出贡献。如果我们先欧拉筛求解质数,接下来再利用类似埃氏筛的方法统计,显然在统计时某个质数p可更新bi/(d/p)+=b_{i/(d/p)}+=bi/(d/p)+=bp_pp,而暴力情况下应为bi+=ai/db_i+=a_{i/d}bi+=ai/d,而i/(d/p)∣ii/(d/p)|ii/(d/p)∣i,所以我们统计时就把前面的传给后面了复杂度为O(可Anloglogn)code:#include<原创 2021-05-15 08:03:06 · 57 阅读 · 0 评论 -
P1297 [国家集训队]单选错位
题目题目思路就这绿题?建议降黄设ansians_iansi为答对i题的期望,pip_ipi为答对i题的概率。那么最后的答案AnsAnsAns即为∑i=1npi\sum^{n}_{i=1}p_i∑i=1npi。推导过程:Ans=∑i=1nansi=∑i=1npiAns= \sum^{n}_{i=1} ans_i=\sum^{n}_{i=1}p_iAns=∑i=1nansi=∑i=1npicode:#include<iostream>#include<cstd原创 2021-05-13 21:19:57 · 60 阅读 · 0 评论 -
《ybtoj高效进阶》第六部分第二章例题1 同余方程
题目大意给a,ba,ba,b,求ax≡1(mod b)ax≡1(\mod b)ax≡1(modb)的最小正整数解思路显然exgcd,记得判负code:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring> using namespace std;long long x,y;void exgcd(long lo原创 2021-05-13 21:04:05 · 127 阅读 · 0 评论 -
P3868 [TJOI2009]猜数字
题目题目思路显然的CRT,当你提交后……Wrong answer on #10实际上为了不爆long long,我们要用快龟速乘code:#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring> using namespace std;long long n,a[20],m[20],M=1,ans,x,y;v原创 2021-05-13 20:47:17 · 52 阅读 · 0 评论 -
P4549 【模板】裴蜀定理
题目题目思路这题目相当于对n个数相邻的2个进行裴蜀定理的运算,结果存入后一个,最后输出abs(最后一个数)code:#include<iostream>#include<algorithm>#include<string>#include<cmath>using namespace std;pair<int,int> exgcd(int a,int b){ if (b==0) return pair<int,int&g原创 2021-02-06 11:16:31 · 62 阅读 · 0 评论 -
P5431 【模板】乘法逆元2
题目题目思路如果直接暴力会TLE,其实对于题目的柿子我们可以进行转换,把时间复杂度降到O(n)code:#include<iostream>#include<algorithm>#include<string>#include<cmath>#include<cstdio>using namespace std;long long n,p,k,a[5000006][3],o,s;inline long long read()原创 2021-02-06 11:13:31 · 74 阅读 · 0 评论 -
P1495 【模板】中国剩余定理(CRT)/曹冲养猪
题目题目思路讲一下CRT吧若m1,m2,…,mnm_1,m_2,…,m_nm1,m2,…,mn满足两两互质,设M=∏i=1nmiM=\prod_{i=1}^{n} m_iM=∏i=1nmi,Mi=MmiM_i=\frac{M}{m_i}Mi=miM,tit_iti满足tiMi≡1(mod mi)t_iM_i≡1(\mod m_i)tiMi≡1(modmi),有任意n个整数a1,a2,…,ana_1,a_2,…,a_na1,a2,…,an满足方程组:{x≡a1(mod原创 2021-05-13 20:17:52 · 61 阅读 · 0 评论