数学
࿐ཉི༗࿆一鲸落,万物生 ༗࿆ཉི࿐
这个作者很懒,什么都没留下…
展开
-
D. Lucky Chains(GCD+素数筛)
如果一个数对(x,y)是幸运的,当且仅当gcd(x,y)=1,一条链可以由以下规律的数对组成,(x,y),(x+1,y+1),(x+2,y+2)……所以我们最终的任务就是找到一个(b-a)的因子k,使得k-a%k最小,由于a,b都是固定的,所以我们我们每次找到b-a的最小质因子p(该过程可以通过筛素数的过程得到),然后用p-a%p去更新答案即可,当一个因子用完以后,把这个因子从(b-a)中除尽,然后再考虑下一个因子。gcd(a,b)=gcd(a,a-b),(a>b),至于为什么,可参考以下网址。原创 2022-12-22 19:44:29 · 379 阅读 · 0 评论 -
2019icpc南京 Problem G. Pyramid
解题思路:我们首先暴力打表,发现边长为1,2,3,4,5,6的大三角形中分别存在1,5,15,35,70,126,210个小三角形,然后最难的部分就是观察这个数列,找规律,当时做的时候啥也没看出来,后来看别的大佬写的博客才知道这是一个4阶等差数列,就是我们前后两个数字两两相减,直到出现规律。然后列出四阶等差数列的通项公式an^4 + bn^4 + cn^3 + dn^2 + en + f,然后代入求解得:n^4/24 + n^3/4 + 11*n^2/24 + n/4。也就是再作差1, 1, 1为常数。原创 2022-09-04 21:15:09 · 255 阅读 · 0 评论 -
codeforces 1713 problem C Build Permutation(思维构造+数论)
解题思路:首先我们要知道一个定理,对于一个数字n,区间[n,2n]中一定存在一个平方数,然后我们从后往前看,对于第x1个数,我们找到比它大的最小的一个平方数s,令x2=s-x1,那么我们就只需要将从x2到x1这段数字颠倒即可,这里根据我们之前给出的定理可以知道x2原创 2022-09-02 18:46:46 · 205 阅读 · 0 评论 -
Acwing 215. 破译密码(容斥原理)
解题思路:题目要我们找满足1原创 2022-08-31 22:14:14 · 219 阅读 · 0 评论 -
AcWing 199. 余数之和
AcWing 199. 余数之和。原创 2022-08-31 21:48:56 · 91 阅读 · 0 评论 -
Acwing 214. Devu和鲜花(容斥原理)
xn=m的解的个数,这里我们可以想到用隔板法去解决,但是每个xi>=0,隔板法不能取到0,所以我们为每一个xi+1变成yi,yi>=1,现在就是从n+m-1个空中选择n-1个空 将n+m朵花分成n组,但是这个问题现在是有限制条件的,即每个xi...原创 2022-08-29 18:54:06 · 98 阅读 · 0 评论 -
2022杭电多校 G - Shinobu loves trip
这就需要我们在预处理的时候记录一个mp[i],表示a^j%p=i的最小的j的值,也就是能到达点i所需要的最小天数,我们只需要判断temp原创 2022-08-05 22:14:26 · 70 阅读 · 0 评论 -
2022牛客多校2 J-Link with Arithmetic Progression
示例1。原创 2022-07-24 22:36:13 · 221 阅读 · 3 评论 -
序列统计 黑暗爆炸 - 4403
解题思路:方法1:然后就可以联想到用隔板法来求解这个题,类比之前方程的解那道题,我们假设长度是k,所以我们就可以将问题抽象成有R-L+k个小球,每一个xi都是大于等于1的,又因为是小于等于R-L+k,在每2个小球之间的空隙和最后一个小球的后面共R-L+k个空隙中选择k个位置来放置隔板,就是C(r-l+k.k),最后从1~N来枚举k进行累加,但是由于N非常大,所以我们还需要对公式 进行进一步的化简,化简步骤会在第2中方法后给出。方法2:同样也是对k从1到N枚举每一种情况累...原创 2022-03-05 11:23:15 · 66 阅读 · 0 评论 -
数三角形 LibreOJ - 2240
解题思路:首先算出取点的所有可能的情况,先让m++,n++,所有可能的情况是C(mn,3),然后我们就可以采用容斥原理的思路,将所有不符合的情况去掉,那什么是不符合的情况来?由于构成的三角形的3个点各不相同,只有当3点共线时才不会构成三角形,这时我们可以将三点共线的情况分斜率来考虑:1、斜率不存在,即竖直情况,mC(n,3)2、斜率为0,即水平情况,nC(m,3)3、斜率存在且不为0,共分正负2中情况,但正负是对称的,所以只需要考虑一种情况即可,这里拿斜率大于0的情况来讨论:(1)、首先我们来枚举.原创 2022-03-04 21:37:37 · 139 阅读 · 0 评论 -
数学小知识之求线段上整点的个数
题目描述在一个直角坐标系中有一条线段,求这条线段上有几个整数点输入输入一个数T(T<10000),表示有T组测试数据,每组数据输入有四个整数x1, y1, x2, y2,表示线段的两端点坐标,范围限制在-1e16 <= x1,x2,y1,y2 <= 1e16输出输出一个整数,表示这条线段上整数点个数样例输入 2 1 1 5 5 1 3 4 12 样例输出 5 4 题目分析:通过分...转载 2022-03-04 20:28:55 · 1012 阅读 · 0 评论 -
车的放置 LibreOJ - 10232
解题思路:由于这个图形是一个不规则图形,所以计算会比较困难,但如果我们能够对它进行分割,分割成多个规则的图形就会容易许多,对于这个题,我们可以将这个多边形分割成2个矩形,一个是以a,b分别为长宽的矩形,一个是以a+c,d为长宽的矩形,也就是如果所示的分割法:题目要求我们要在棋盘中放置k个车,那我们就可以从1~k枚举在上面那个矩形中要放置的车的数量(对应下面矩形要放置的数量也确定了),对每一种情况求和相加就是答案。对于每一种情况在上面矩形中放i个车,首先在上面矩形的b行中选择i行来放置C(b,..原创 2022-03-04 19:32:56 · 69 阅读 · 0 评论 -
求组合数4部曲
num 1:这是a和b的值都较小,所以可以用递推的方法求出组合数,利用公式C(a,b)=C(a-1,b-1)+C(a-1,b),复杂度是O(N^2) 也就是2000*2000的复杂度。代码:#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;const int N=2010;int c[N][N]原创 2022-03-03 23:05:21 · 207 阅读 · 0 评论 -
方程的解 LibreOJ - 10231(组合计数)
解题思路:对于这个问题,首先我们要通过快速幂求出n=x^x%1000的值,下面就是找出满足a1+a2+……+ak=n(a1....ak为未知量)的解的组数,这里我们可以采用组合计数中常用的一个方法——隔板法来求得,我们假设有n个小球排成一列,目的是通过加隔板的方式将这些球分成k组,n个小球之间一共有n-1个空隙,我们要做的就是要在这n-1个空隙中添加k-1个隔板(2个隔板不能放在同一个位置),很容易想到就是求C(n-1,k-1),可以 C(n,k)=C(n-1,k-1)+C(n-1,k)来递推计算,采...原创 2022-03-02 20:44:55 · 110 阅读 · 0 评论 -
Bullcow 牡牛和牝牛 黑暗爆炸 - 3398
题解:设牡牛位置为1,牝牛位置为0,f[i]表示以第i个位置以1结尾的方案数,下面就是要思考f[i]可以由那些状态来得到,所以f[i]=f[0]+f[1]+......+f[i-k-1],至于为什么是加到f[i-k-1]因为1的前面至少有k个0,所以倒数第2个1的位置最大是在i-k-1处,其位置的取值范围是1……i-k-1,当然也可以一个1都不放,全是0,就是对应的我们的f[0],这里还要特判一种情况就是如果i-k-1<0,那么此时f[i]=f[0],也就是说它可以由前面全是0的方案得到。代码..原创 2022-03-01 22:38:43 · 160 阅读 · 0 评论 -
最幸运的数字 ACWing 202
解题思路:由题意知L|8……8(x个8),而8……8(x个8)可以变化成8*(10^x-1)/9,最终变成了L|8*(10^x-1)/9——>9L|8*(10^x-1),因为8和9互质,所以令d=gcd(8,L),两边同时除以d,得到9L/d|10^x-1,(9L和8的最大公约数为d,当9L除以d后,9L/d与8/d再无约数,但9L/d|8*(10^x-1)/d依然成立,所以可以得到9L/d|10^x-1,已知欧拉定理:a^ϕ(n)≡1(mod n) [条件:gcd(a,n)=1],令c=9L/d..原创 2022-02-27 20:46:37 · 76 阅读 · 0 评论 -
LibreOJ - 2589 Hankson 的趣味题
解题思路:因为x和b0的最小公倍数是b1,所以x一定是b1的约数,我们可以枚举出b1所有的约数,依次对给定的2个条件进行判断,如果符合条件答案加一,现在的问题是如何枚举b1的所有约数,如果暴力从1开始枚举必定会超时,稍微改进一下采用试除法,其时间复杂度为:,依旧会超时,再次改进,我们可以先求出根号2e9内的质数,用这些质数对b1进行质因数分解,得到其质因子和相应的次数,通过质因子和次数可以将b1所有的约数枚举出来判断条件即可,这里先普及一个知识点,1~n中的质数的个数约为n/ln(n)个,所以...原创 2022-02-24 21:14:42 · 173 阅读 · 0 评论 -
黑暗爆炸 2721 樱花
解题思路:2种解法最终都变成了求(n!)^2的约数个数,关于这个问题,涉及如何求出一个数的约束的个数,由算术基本定理得N = p1^c1 * p2^c2 * ... *pk^ck,那么根据这个公式我们可以得到以下结论:约数个数: (c1 + 1) * (c2 + 1) * ... * (ck + 1)约数之和: (p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck)这里我们先求出n!的约数个数然后稍加变...原创 2022-02-23 21:17:36 · 129 阅读 · 0 评论 -
《算法竞赛进阶指南 》质数距离
解题思路:由于这个题给出的l和u的取值范围非常大达到了1e9的数量级,我们不可能从1到2^31进行线性筛来进行筛选素数,但是题目告诉我们L和U的差值不会超过1e6,这里有一个性质,如果一个数x是合数的话,那他就一定能分解出一个小于根号x的质因数,对2的31次方开根号大概是小于50000的级别,所以可以算出1到50000之间的质数,然后用这些质数去排除那些在给定区间之内的合数,那么剩下的数就是区间之内的质数了,所以现在的关键是如何用1到50000内的质数去筛选掉处于区间内的合数,这里有一个公式用来求大..原创 2022-02-22 20:45:43 · 212 阅读 · 0 评论