数论
小菜鸡加油
菜鸡
什么都能折磨
展开
-
C. Square Subsets(状压dp+组合数学/线性基)
https://codeforces.com/problemset/problem/895/C线性基待补。思路:将质因子状态集合状压,0表示此时次数为偶数,1表示次数次数为奇数。对于当前s,奇数时候其分解的质因子要和s异或得之前的状态。偶数直接沿用。对于某个数字出现的次数k,我们考虑取C(1,K)+C(3,K)+----=2^(K-1).偶数同理。最后注意,卡时间,预处理幂次。卡空间。改成滚动。#include<iostream>#include<v..原创 2021-05-26 15:54:33 · 200 阅读 · 0 评论 -
D. Roman and Numbers(状压dp+前导零)
https://codeforces.com/problemset/problem/401/D思路:看到这个18开始往数位dp搞了。但是是个状压。定义dp[s][j]:当前取数状态为s,且modm=j的方案数。对于排列,我们考虑其枚举s中的一个数,然后从之前状态转移,且枚举到的这个数放在最后一个位置加进去。这样第二部分的mod就可以顺推,前一个状态为k,现在加入某个数的状态可以算出。之前的数为X,X=km+j;选择了w[i]之后,X=10km+10j+w[i]; 余数就变成了:(10j+w[原创 2021-05-26 01:24:35 · 123 阅读 · 0 评论 -
D. GCD Counting(dp直径+连续gcd)
https://codeforces.com/problemset/problem/1101/D思路:一段gcd维护序列的公共质因子即可。2e5里面质因子个数就十几个。对于当前根节点,判和子树中哪个质因子相同就可以达到gcd>1。然后转移。O(n*8*8)。筛后处理147ms结束#include<iostream>#include<vector>#include<queue>#include<cstring>#include<原创 2021-05-25 20:36:07 · 306 阅读 · 0 评论 -
P5656 【模板】二元一次不定方程 (exgcd)
https://www.luogu.com.cn/problem/P5656#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<algorithm>#define.原创 2021-04-28 10:10:56 · 135 阅读 · 0 评论 -
exgcd理解
https://www.luogu.com.cn/problem/P5656前言:以前一看到数论就爬...现在慢慢看..因为以后也没机会看了对于exgcd,用途是用来求不定方程的解。1.ax+by=c有解的充分必要条件是gcd(a,b)|c这点证明可以翻数论书阿..2.那我们更关心的是求解问题。刚前面说了有解的条件是gcd(a,b)|c;那么令(a,b)=d,a=a1d,b=b1d然后一通证明猛如虎得出一个通解形式x=x0-b1ty=y0+a1t这里的x.原创 2021-04-27 16:21:33 · 1040 阅读 · 0 评论 -
Count Pairs(同余)
https://codeforces.com/contest/1188/problem/B思路:知道同余两边可以加项减项后就可以直接做了#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#inc原创 2021-04-26 15:11:42 · 190 阅读 · 0 评论 -
A. Hilbert‘s Hotel(数论)
https://codeforces.com/contest/1344/problem/A证明参考:https://blog.csdn.net/qq_43408978/article/details/108889203#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#i原创 2021-04-25 19:53:38 · 194 阅读 · 0 评论 -
B. Kamil and Making a Stream(暴力+前缀gcd)
https://codeforces.com/contest/1229/problem/B思路:开始直接儿子logn跳,cf这么强的数据肯定有链子的数据,直接tle9.考虑到gcd的单调性,一条链子上最多只有logn个。两个角度理解:1.gcd每次减小要减少的话至少会少一个次幂的一次。假设是2的1次,那么就是logn的递减速度2.gcd(a,b)=gcd(b,amodb) mod运算每次至少会少一半。(两个不等式合并)因此我们从根节点跑一个前缀,map记录每个节点的前缀的gcd的距离原创 2021-04-23 22:06:49 · 312 阅读 · 0 评论 -
C. Product 1 Modulo N(数论+打表)
https://codeforces.com/contest/1514/problem/C思路:证明日后补。打表:#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include<cstdio>#include<a原创 2021-04-20 18:16:27 · 267 阅读 · 1 评论 -
C. The Football Season(不定方程x+y的最小解)
https://codeforces.com/problemset/problem/1244/Chttps://blog.csdn.net/z472421519/article/details/102608344?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.control&dist_request_id=1331645.2184原创 2021-04-15 15:55:53 · 118 阅读 · 0 评论 -
2B - The least round way(dp)
https://codeforces.com/problemset/problem/2/B思路:其有个点就是2和5中分别dp,取最小的一个,答案一定满足最小的那个。假设2的最少个数是4,意味着所有路其能走出一条4来,而此时5的最少个数是7,那么选走出4来的那条路优。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>原创 2021-04-14 18:31:02 · 98 阅读 · 0 评论 -
D. Two Divisors(数学+构造)
https://codeforces.com/problemset/problem/1366/D思路:ai分解成质因子形式。对于其中一个pi,取到pi^k1满。那么此时对于a的所有质因子来说,不管取啥, 其b1+b2的公共因子只有一边能满足。此时互质了。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#inc原创 2021-04-14 13:44:21 · 205 阅读 · 0 评论 -
D. Dreamoon and Sets(构造+数论)
https://codeforces.com/problemset/problem/476/D思路:面向样例编程。1 2 3 57 8 9 1113 14 15 17...#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>.原创 2021-04-13 21:35:08 · 108 阅读 · 0 评论 -
C. Maximal GCD(思维+数学)
https://codeforces.com/problemset/problem/803/Chttps://blog.csdn.net/weixin_43944486/article/details/102446043?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-4&spm=1001.2101.3001.4242/* 设最后选出来的k个数字为 a[1],a[2]...a[k]; 这些原创 2021-04-12 20:08:59 · 171 阅读 · 0 评论 -
G - Short Task(筛法求1e7求约数和)
https://codeforces.com/contest/1512/problem/G思路1:埃筛思路比较直接。nlognlogn 2s(1e7)跑了1500+ms#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#include<map>#include<set>#include&原创 2021-04-11 10:32:24 · 376 阅读 · 0 评论 -
D - Fox And Jumping(思维+dp+裴蜀定理)
https://codeforces.com/contest/510/problem/D思路:其实可以变成是否可以取一些数,其方程组可以得到t=1,因为1才能到任意距离嘛。因此裴蜀定理就可以知道是其取的数要gcd=1。由此变成取一定数使得其gcd=1的代价最小。dp[i]:其gcd为i的时候的最小代价。由于倒推有一点麻烦。改成顺推,由可以更新的下一状态为dp[ gcd(a[i],j)] 其中这个j是之前出现了的gcd值,dp[gcd(a[i],j)]=min(dp[gcd(a[i],j)原创 2021-04-10 11:23:22 · 128 阅读 · 0 评论 -
552C - Vanya and Scales(思维+数学)
https://codeforces.com/problemset/problem/552/C思路:Basically, let’s try to solve:c0*w^0 + c1*w^1 + c2*w^2 + … = mWhere each c0, c1, c2 are either -1, 0 or 1.-1 means we used the weight on right, +1 means we used the weight on left and 0 means we did原创 2021-04-04 12:04:14 · 130 阅读 · 0 评论 -
A. Finite or not?(思维+数学)
https://codeforces.com/problemset/problem/983/A思路:采用十进制转化成二进制小数部分的思路,我们采用进制累乘,但是计算机取整会导致数字变小。于是看成分数,看成质因子分解形式,每次的相除就是消去公有的质因子。于是转化成while( q/gcd(q,b) )的形式。但是由于数字很大,分解logn,gcd是logn;Nlognumlognum可以超时。所以对于gcd!=1的时候,先整除完。再进行上述步骤就优化成nlognum了。考虑q是否能否b^n原创 2021-03-28 12:22:38 · 103 阅读 · 0 评论 -
621C - Wet Shark and Flowers(倍数+数学期望)
https://codeforces.com/problemset/problem/621/C思路:首先转化成倍数问题。区间为p的倍数O(1)便可得出。暴力的话肯定不行。考虑相邻一对 对答案的贡献。设c1,c2为相邻一对中p的倍数的个数。x1,x2...xn为每个区间的总共能取的个数单纯考虑c1,c2对答案的贡献可以得出 [ c1*c2+c1*(x2-c2)+c2*(x1-c1) ] *x3*x4*x5...xn /( x1*x2*x3*x4....) 所有相邻对的贡...原创 2021-03-25 16:42:10 · 182 阅读 · 0 评论 -
B - Restore Modulo(数学+细节)
https://codeforces.com/contest/1484/problem/B思路:少看到一个条件,考场怀疑了半天的人生...这个条件就是m>c对于ai和ai+1来说,我们列出式子:ai+1=(ai+c)%m;可以得到,ai+1+m*k1==ai+c;如果ai+1>ai,那么令d=ai+1-ai,可得d+m*k1==c,如果m>c,那么k1必然是0!(这就是为什么这题只是个B题,没有看到这个条件就会无语很久...)此时c=ai+1-ai;如果ai+.原创 2021-03-22 20:42:33 · 292 阅读 · 0 评论 -
D. The Number of Pairs(思维+数论+欧拉筛/埃筛)
https://codeforces.com/contest/1499/problem/D参考题解:https://blog.csdn.net/ghu99999/article/details/115006433思路:首先由裴蜀定理ax+by=c有解的充分必要条件可以得到对于方程 lcm(a,b)*c+gcd(a,b)*(-d)=x , x必定是gcd(gcd(a,b),lcm(a,b))的倍数把gcd(a,b)看成a,b的质因取min,lcm(a,b)看成a,b的质因数取max,.原创 2021-03-19 22:02:34 · 659 阅读 · 0 评论 -
E1 - Square-free division (easy version)(思维+平方数质因子分解+卡常)
https://codeforces.com/contest/1497/problem/E1思路:最开始是暴力3000的平方数每个对n里的进行除看有无除数,logn*n*3100 tle2.优化:平方数只和其奇数指数的质因子有关,sqrt处理,然后map找因子。tle(102test)两种方式优化:TLE102test改成hash手写可以考虑试试。我改防卡的没用。估计是卡stl了。#include<iostream>#include<vector>#原创 2021-03-18 21:57:59 · 227 阅读 · 3 评论 -
923A - Primal Sport(思维+倒推+欧拉筛最大质因子)
https://codeforces.com/problemset/problem/923/A考虑得到数字x2=N,假设是质数p的倍数.那么x1肯定在x2-p+1~x2这个范围内才行因为p的倍数要刚好大于等于x1。所以x1肯定是在这两个倍数之间才行。p是质数,那么让p的值越大越好。于是筛最大质因数。这样得到的x1才可能越小。然后枚举x1在x2-p+1~x2之间。用同样的方式得到x0。#include<iostream>#include<vector>#includ原创 2021-03-18 20:41:35 · 118 阅读 · 0 评论 -
D. Relatively Prime Graph(构造+数论)
https://codeforces.com/problemset/problem/1009/D思路:特殊点从1开始往后每个点都连,然后2,3....实际上等价于每个i和前面中与自己互质的连。那么就是欧拉函数。每个i就是欧拉函数前缀和。于是暴力即可。#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>#i原创 2021-03-15 16:19:44 · 190 阅读 · 0 评论 -
欧拉函数板子
求单个ll eular(ll n){ ll ans = n; for(int i=2; i*i <= n; ++i) { if(n%i == 0) { ans = ans/i*(i-1); while(n%i == 0) n/=i; } } if(n > 1) ans = ans/n*(n-1); return..原创 2021-03-15 15:57:15 · 96 阅读 · 0 评论 -
A. The Meaningless Game(思维)
https://codeforces.com/problemset/problem/833/A思路:设k次操作。a=k1^2*k2^2*k3b=k1*k2*k3^2a*b=k1^3*k2^3*k3^3要满足条件,于是右边需要能开三次方出来是个整数,且其开出来的整数要能整除a和b#include<iostream>#include<vector>#include<queue>#include<cstring>#include原创 2021-03-10 15:39:13 · 96 阅读 · 0 评论 -
D - GCD of an Array(思维+维护gcd)
https://codeforces.com/contest/1493/problem/D题意:已知一个长度为n的数列q次操作,每次将ai乘以x,在每次操作后输出整个数列的 gcd。思路:对gcd有贡献的就是多个数的公共质因子的最小次数。所以要维护一个每个数的质因子分解和其次数,用map维护。另外一个就是维护某个质因子出现的次数和每次出现的数量,如果出现次数==n了,说明这个质因子此时属于对gcd有贡献的公共质因子,取其最小次数就好*gcd.那么如何维护其q次的更新呢?每次新乘上...原创 2021-03-07 13:34:59 · 796 阅读 · 1 评论 -
模数的世界(同余性质+exgcd)
https://ac.nowcoder.com/acm/contest/9983/A思路:首先特判0,0,0;其次第一点: x%p==a <--->必存在(p-1)*k1%p==a.所以贪心上是(p-1)那问题就变成了构造q1,q2互质且他们(p-1)*q1%p==a&&(p-1)*p2%p==b然后将k1,k2给转化成式子。(p-1)*k1%p==a;(p-1)*k2%p==b;再将k1,k2写出表达式k1=t1p-ak2=t2.原创 2021-02-27 22:46:40 · 194 阅读 · 0 评论 -
B.系数(mod意义下的系数转化+lucas)
https://ac.nowcoder.com/acm/contest/9986/B思路:mod意义下-2和1在mod3是一样的。转化成(x-1)^(2n).然后求系数就是高中的组合数基础题2n中选k个x,剩下的都给(-1)于是(-1)^(2n-k)C(2n k)由于n很大,不能预处理阶乘。但是p很小,于是预处理p,也就是lucas。组合数板子#include<iostream>#include<vector>#include<..原创 2021-02-24 21:18:24 · 214 阅读 · 0 评论 -
D - Nezzar and Board(思维+裴蜀定理)
https://codeforces.com/contest/1478/problem/D题意:有n个数,可以进行一种操作得到2x−y, 原数不会消失,问能否得到k.思路:没思路硬模拟(或者看到这个多个数构成..感觉像裴蜀定理2x−y可以看做x+(x−y),即该数与两数之差的和。用几组样例模拟一下,可以发现,无论进行多少次操作,始终都是ai+∑{j,k}(aj−ak),也就是在若干组差值加上一个值。这样的话就是要n^2枚举差值了。但是还有个性质。a2-a1已知,a3-a2已.原创 2021-02-21 18:42:21 · 249 阅读 · 0 评论 -
C. Trailing Loves (or L‘oeufs?)(思维+(1~n)或n!质因子分解)
https://codeforces.com/problemset/problem/1114/C题意:求 n转化为 b 进制下末尾有多少个 0.思路:一个数在b进制的末尾有多少个0呢.从b的大次幂往小次幂看哪次能整除,那么有多少个0。怎么理解呢?一个数对于p进制的一位能整除,实际上就是该位,比如该位p^4,那么该位上的数就是x/(p^4),数超过了p就往前进位。比如:100010(2) = 34(10) = 2 × 17是二的一次方的倍数1100(2) = 12(10) = 4 ×原创 2021-02-18 18:11:11 · 131 阅读 · 0 评论 -
C. Infinite Fence(思维+裴蜀定理)
https://codeforces.com/problemset/problem/1260/C现有10^100块木板需要涂漆.第x块如果是x是a的倍数,则涂R颜色.是b的倍数,则涂B颜色。如果既是a又是b的倍数,那么两种颜色都可以涂;如果连续有k块板的颜色是一样的,则输出REBEL,否则输出OBEY。思路:首先不妨假设r<b。比较明显的是r的倍数肯定比b多。b的颜色都是b*1,b*2,b*3,....b*n贪心要让其中一个间隔放下最多的a那么就是让一个a的倍数原创 2021-02-17 18:07:16 · 391 阅读 · 0 评论 -
Primes and Multiplication(质因子+贡献)
https://codeforces.com/problemset/problem/1228/C思路:算出x的每一个素因子的贡献。对于每个素因子,假设为2,其一次为n/2,两次为(n/2)/2==(n/4),三次为((n/2)/2)/2)=n/8,累加即是2次幂之和的贡献#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cmath>原创 2021-02-13 22:56:17 · 165 阅读 · 0 评论 -
C. Hacking Cyphe(大数取mod)
https://codeforces.com/problemset/problem/490/C题意:给一个数字串,和两个整数a,b。问能否将该串分成两部分,其前后两部分分别被这两个整数整除。思路:大数取mod,字符串Mod后由于取模的公式可得是等价的。然后枚举断点i#include<iostream>#include<vector>#include<queue>#include<cstring>#include<cm原创 2021-02-13 20:14:37 · 128 阅读 · 0 评论 -
I. 迷途的怪物(欧拉降幂+大数取模)
思路:欧拉降幂后指数部分是n%f(p),f(p)=p-1,所以是n%(p-1),由于n特别大,字符串取模。假设x是被除数.x=(x1*10000%mod+x2*1000%mod+x3*100%mod+x4*10%mod+x5*1%mod)%mod;答案等价x%mod字符串取mod后指数在1e7范围内,上快速幂即可.#include<iostream>#include<vector>#include<queue>#include<cstri..原创 2021-02-13 20:13:12 · 135 阅读 · 0 评论 -
D. Soldier and Number Game/牛牛的“质因数”(欧拉筛处理最小/最大质因数)
https://ac.nowcoder.com/acm/contest/9982/Ihttps://codeforces.com/problemset/problem/546/D思路:总的思路就是要o(n)拿出每个数的最大/最小质因数。然后就可以logn处理。欧拉筛本身的处理就是可以把v[i]存成i的最小质因数来筛,详见F. 1.小W 的质数(prime)[欧拉筛再理解]如果我要处理出每个数的最大质因数呢?类似一个dp的思路Maxp[x]:表示x的最大质因子枚举的i是x的最大因.原创 2021-02-09 20:41:18 · 211 阅读 · 0 评论 -
幂塔个位数的计算(欧拉降幂板子)
https://ac.nowcoder.com/acm/contest/9981/H思路:欧拉降幂。由于没怎么接触,补一下这块知识。由于我们取个位数,所以对于本题目来说是mod10(p=10)至于欧拉降幂的递归形式,就是如下面两个图所示.举个小例子模拟一下:还有一个问题。我们都是整数,这个题这么大,怎么看取多少位呢。mod10递归几次就结束了,我们打不了取100层。对于这个底数a。我们要观察。对于其%2这一层,相当于判奇偶,只要知道个位。对于%4,则要..原创 2021-02-03 00:26:32 · 1402 阅读 · 4 评论 -
C. Division(思维+质因数分解)
https://codeforces.com/contest/1445/problem/CTo improve his division skills, Oleg came up withttpairs of integerspipiandqiqiand for each pair decided to find thegreatestintegerxi, such that:piis divisible byxi; xi is not divisible byqi....原创 2021-01-22 12:40:36 · 195 阅读 · 0 评论 -
B. Different Divisors(思维/打表)
https://codeforces.com/contest/1474/problem/B题意:We gave you an integerdand asked you to findthe smallestpositive integera, such thataahas at least4divisors; difference between any two divisors ofais at leastd.思路:首先至少4个因子。假设刚好取4个,那么一个1,...原创 2021-01-20 10:42:42 · 441 阅读 · 0 评论 -
E. Singhal and Numbers(质因数快速分解倍增优化版本)
https://codeforces.com/gym/102767/problem/E思路比较直接:套用大数质因数分解的板子。然而我威海的板子T了..没错板子T了。于是更新板子,去洛谷找了一个优化版本的。板子源自网络。这道题用时400ms,相当优秀。#include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<cstdio>原创 2020-11-04 23:22:28 · 259 阅读 · 0 评论