![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数学
文章平均质量分 82
路人丙丙
这个作者很懒,什么都没留下…
展开
-
LightOJ 1236 Pairs froming LCM 素因子分解
题意给定一个数nnn,问在小于等于nnn的数中,有多少数对(a,b)满足lcm(a,b)=nlcm(a,b)=nlcm(a,b)=n,其中a<ba<balcm=nlcm=nlcm=n的数对中的两个数一定是n的因子 我们从因子的角度来看LCM: 对n进行素因子分解 n=pa11pa22pa33...pakkn=p1a1p2a2p3a3...pkakn=p_1^{a_1}p_2^...原创 2018-04-26 15:18:45 · 207 阅读 · 0 评论 -
hdu5976 Detachment 逆元 优化
传送门 题意:给定一个数x,我们可以把这个数分解成一个一个的小的数字a1,a2,a3…… 定义s=a1*a2*a3*……. 问如何分解x使得s最大,并且不能有重复的数字 思路:分解成数量多的小的数字,比分解成数量少的大的数字的乘积更大,这一点我不知道怎么证明……并且由基本不等式我们可以知道,相等和的两个数,越接近那么乘积越大 可想而知,如果可以有重复的数字,那我们可以把x分解成2和3的和原创 2018-01-13 17:31:16 · 191 阅读 · 0 评论 -
hdu6237 素因子
传送门题意:给定n堆石子,每次可以将一个石子从一堆移到另一堆,问最少移动几次,使得最后每一堆石子的个数都为一个大于等于2的数x的倍数思路:首先x一定是n堆石子数和s的因子,所以可以枚举s的因子来对每堆石子进行调整,再找最小的调整数。但是其实不需要找到s的所有因子,只需要找s的素因子即可我们可以枚举每个素因子p[i],记录下每堆石子数距离p[i]的倍数的求模后的值(也就是余数),并对原创 2017-12-17 16:56:30 · 270 阅读 · 0 评论 -
hdu1299 素因子分解
hdu1299题意:求使不定方程1 / x + 1 / y = 1 / n成立的正整数解。思路:x、y一定是大于n的数,设y=n+k,则1/x=1/(n+k)+1/n,整理一下即x=n^2/k+n,所以只要k是n^2的因子,就一定有解,那么就转化成了n^2的因子个数。直接求n^2的因子个数容易超时,转化成n来做,若n=a1^x1+a2^x2+a3^x3+……(a1,a2,a3……都原创 2017-06-11 13:36:01 · 323 阅读 · 0 评论 -
hdu6050 推公式矩阵快速幂
传送门#include#include#include#include#include#includeusing namespace std;typedef long long ll;const int N=2;const int mod=1e9+7;struct matrix{ ll m[N][N];};matrix mat原创 2017-12-15 20:33:29 · 227 阅读 · 0 评论 -
hdu4602 Partition 快速幂
传送门记录一下……题意:通过隔板法,可以把一个数n能拆分成2^(n-1)种方式,给定一个k,问n的所有拆分中有几个k,结果模1e9+7思路:相当于有一排1,捆绑了k个数,然后看其他的数有多少种拆分方式,如果k个数在两边,那么另外的n-k个数就有2^(n-k-1)种拆分方式,总共有2种情况;如果k个数在中间,那么其它n-k个数总共有2^(n-k-2)种排列方式,总共有n-k-1种情况,这原创 2017-12-03 20:32:36 · 207 阅读 · 0 评论 -
hdu4790 Just Random
传送门题意:给出两个区间[a,b],[c,d],各取一个数i,j,求能使(i+j)%p=m的概率思路:总体可以取的数个数为(b-a+1)*(d-c+1),计算能满足条件的个数,如果列出来会发现会形成一个平行四边形,只要保证a+d>b+c时就可以把这个平行四边形分成三部分,然后分开找满足(i+j)%p=m的位置就可以了完整代码:#include #include #include原创 2017-12-02 14:31:41 · 179 阅读 · 0 评论 -
51Nod 1119 机器人走方格 组合数学
组合数学就是组合数学啊……感觉脑子不如高中……右走m-1步,左走n-1步,所以走的方法就是c(m-1+n-1,n-1),当然如果数据比较小的话,用递推就可以了。c(m-1+n-1,n-1)=(m+n-2)!/((n-1)!(m-1)!)最后对1e9+7求模,这里用费马小定理求一下逆元就可以了。#include#include#include#include#includ原创 2017-07-25 19:56:19 · 280 阅读 · 0 评论 -
hdu4454 计算几何 三分
传送门题意:给定一个圆和一个矩形、一个点,求点先到圆再到矩形的最短距离和思路:点是定点,实际上是求圆上的点到这个定点和矩形的最小距离和,所以遍历圆上的点,三分就可以了,在求与矩形的最小的距离的时候,分成八部分(可以说十分特别麻烦了T T)完整代码:#include #include #include #include #include using namespace st原创 2017-09-24 18:37:33 · 269 阅读 · 0 评论 -
51nod 1678 容斥原理
传送门题意:输入一个数A,为1时,将a[i]改成b;为2时,求gcd(i,j)=1的j对应的a[j]的和思路:求i与1-n中互质的数,这个很眼熟,是一个经典的容斥,即将n素因子分解,对n的素因子及素因子的组合进行容斥,最后用a[i]的和减去容斥的结果就是最后的结果了,但是如果直接求 某个素因子或者素因子的组合的 倍数和时,很容易超时,所以可以先预处理这些数的倍数和。在修改时也需要修改这些已原创 2017-08-22 20:00:04 · 252 阅读 · 0 评论 -
hdu5514 容斥或数论
传送门题意:一排编号0-m-1的石头围成一个圈,有编号1-n的青蛙每次可以跳a[i]步,问可以跳到的石头的编号和是多少思路:由于石头是个圈,不难发现每个青蛙最少可以跳的步数差为gcd(a[i],m),也就是说一个每次跳a[i]步的青蛙能跳到gcd(a[i],m)的及其倍数的编号的石头上,我们不难想到用容斥...用枚举子集做了半天,也wa了半天...枚举子集会爆long long,所以不可取原创 2018-01-15 10:41:42 · 214 阅读 · 0 评论 -
hdu6061 推公式 FFT
传送门公式推导参考自http://blog.csdn.net/ZLH_HHHH/article/details/76576544?locationNum=1&fps=1题意:相当于求的每项系数思路:这样就可以用NTT优化来计算代码:#include #include #include #include #include using namespace st原创 2018-01-23 11:34:09 · 256 阅读 · 0 评论 -
hdu1695 gcd 莫比乌斯反演
传送门题意:从1-m中选取x,1-n中选取y,使得gcd(x,y)=k,求选取方法数思路:利用莫比乌斯反演,题目等价于从1-m/k中选取x,1-n/k中选取y,使得gcd(x,y)=1,求选取方法数,我们设f(k)=使gcd(x,y)等于k的选取数F(k)=使gcd(x,y)等于k的倍数的选取数我们可以容易得出F(x)=(m/x)*(n/x)根据莫比乌斯反演公式f(k)=∑原创 2017-08-10 20:42:36 · 389 阅读 · 2 评论 -
hdu4921 A Short problem 循环节 矩阵快速幂
传送门题意:求思路:这个题让我对循环节有了新的认知QAQ:我们首先考虑g(n)对1e9+7的循环节,这个确实不大好找……可以猜测一下这个循环节应该是在1e7、1e8的范围,可以多分几次范围,然后慢慢找到这个循环节ll a=0,b=1,c;for(ll i=2;i<=300000000;i++){ c=(3*b+a)%mod1; a=b%mod1; b=c%m原创 2018-04-23 21:38:48 · 199 阅读 · 0 评论 -
CodeForces - 697E 找递推、快速幂
http://codeforces.com/problemset/problem/697/E E. PLEASE time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output As we all know Barney’s job is “P原创 2018-03-18 13:51:07 · 264 阅读 · 0 评论 -
poj 1222 高斯消元入门 开关问题
传送门题意有5*6=30个的灯,每次拨动某个灯的开关,那么这个灯的上下左右的灯以及它本身的状态会发生变化,现在给出初始状态,要求也输出一个5*6的矩阵,1表示这个灯的开关被操作过,0表示没有,问能使灯全灭的操作是怎么样的思路首先一定要清楚一点:如果一个开关按动两次,那么就相当于没有操作假设初始状态是全灭的,我们的目标状态是到题目中的初始状态,那么相同的操作是可以将题目中原创 2018-01-29 16:57:40 · 243 阅读 · 0 评论 -
带权求切比雪夫距离和最短
即求,我们还是要先把切比雪夫距离转化为曼哈顿距离,其实跟hdu4312的求法很相似了……,只是加上了权值,如果我们还是只看横坐标方向上的:先对横坐标排序,得到一个序号那么横坐标比i个点小的与第i点的横坐标的差的和为其中sumwx[]数组为对x坐标排序了以后权值的前缀和,sumx[]是xi*wi的前缀和横坐标比i个点大的与第i点的横坐标的差的和为同样y坐标上也是相同的算法代码原创 2018-01-27 14:02:55 · 466 阅读 · 0 评论 -
hdu4312 求最小切比雪夫距离和
传送门题意:与hdu4311差不多...不过变成了从八个方向来,这样就转化成了求最小的某个点到其他点的切比雪夫距离和思路:将切比雪夫距离转化成曼哈顿距离来做:我们设x3、x4,这样,我们求x1、x2的切比雪夫的距离:,带入x3、x,这实际是x3、x4曼哈顿距离的二分之一,这样我们就可以按照hdu4311的做法,先对坐标处理一下,求出最小的曼哈顿距离和,最后结果除以2就是想要的答案了原创 2018-01-27 13:41:34 · 327 阅读 · 0 评论 -
hdu4311 Meeting point-1 求最小的曼哈顿距离和
曼哈顿距离:两个点在标准坐标系上的绝对轴距总和可以表示为:传送门本题的题意:给定n个点,每个点到其他的点都可以取得曼哈顿距离和,求最小的距离和思路:分别对x坐标、y坐标排序,我们可以先对x坐标排序,得到一个坐标序号,每个点的序号i的意义是:有i-1个点的横坐标比它小,有n-i个点的横坐标比它大,所以如果我们还可以求得一个x坐标的前缀和sumx的话,那么就是比第i个点横坐标小原创 2018-01-27 12:56:42 · 753 阅读 · 0 评论 -
求n对小于等于它的数取余的和
即求:我们可以先对原式转化一下:,在i的一定区间上会保持一个固定的值比如,我们求一下13对小于等于它的数相除后取地板:13、6、4、3、2、2、1、1、1、1、1、1、1在这里[5,6]上都是一个固定值2,[7,13]上都是一个固定的值1,在这些区间上是等差数列所以我们只需要找到每个区间的首项和末项就可以求出来,那么也就很容易得到了仔细想一想可以发现,每个区间的最后一项是,把这原创 2018-01-27 11:40:17 · 389 阅读 · 0 评论 -
HDU 5119 Happy Matt Friends(母函数)
转载地址Happy Matt FriendsTime Limit: 6000/6000 MS (Java/Others) Memory Limit: 510000/510000 K (Java/Others) Total Submission(s): 4907 Accepted Submission(s): 1859Problem Description Matt has N friends. T转载 2018-01-17 20:45:48 · 208 阅读 · 0 评论 -
hdu5114 Collision扩展欧几里得
传送门题意:给出俩球的初始坐标(x1,y1)、(x2,y2),两个球都是往(1,1)方向运动,如果遇到墙壁,两个球会满足反射定律反射,问最后两球相遇的坐标思路:设相遇经历的时间为t1、如果两球的初始坐标相同,那么相遇时间t=02、如果两球的初始横坐标相同,那么在x方向两球是相对静止的,所以只需要考虑y方向,假设y1\frac{y1+y2}{2}3、如果两球的初始纵坐标相同,同理在y方向两球是相对静原创 2018-01-17 20:11:05 · 207 阅读 · 0 评论 -
Kattis aplusb A+B Problem FFT
传送门题意给出nn个[−50000,50000][-50000,50000],问有多少个三个数的排列满足aia_{i}+aja_{j}=aka_{k},值得注意的是这个题说的是排列即{1,2,3}、{2,1,3}算是两种方案思路我们可以用FFT来优化,假设nn个数是这样的: 2,3,3,4,5,5{2,3,3,4,5,5},那么就相当于一个多项式: x2+2x3+x4+2x5x^{2}+2x^{原创 2018-01-31 11:26:55 · 249 阅读 · 0 评论 -
poj2079 triangle 凸包 旋转卡壳
传送门题意就是从给定的点中找出面积最大的三角形。很明显三个点都是凸包上的点,要求一下凸包,但是三角形的边长不一定是凸包的边!!!我们一般做旋转卡壳的时候是固定两个点,来找第三个点,但此题由于边长不一定是凸包的边长,所以底边还要判断一遍……#include#include#include#includeusing namespace std;const int MAXN原创 2017-07-29 11:01:28 · 208 阅读 · 0 评论 -
BZOJ 1951 lucas定理 中国剩余定理
传送门照旧记录一下,不然担心以后碰到类似的题依旧不知道怎么做……题意:求G^(sigma(C(N,i)))%MOD,MOD=999911659,i是N的因子(包括1和本身),首先幂次非常大,所以先降幂次,即sigma(C(N,i))%(MOD-1)+(MOD-1),那么关键就是求sigma(C(N,i))%(MOD-1),我们可以遍历能整除N的数,但999911658是一个合数,它可以分解原创 2017-08-05 20:28:13 · 339 阅读 · 0 评论 -
hdu5251 凸包 旋转卡壳
传送门:hdu5251 矩形面积 接触了旋转卡壳不久,感觉很神奇…… 这个题是要寻找一个矩形来覆盖住桌面上的小矩形,小矩形即四个点啦,所以就是找一个矩形覆盖住这些点,也就要求一个凸包,再用矩形把凸包盖住,那就很明显的是旋转卡壳了,类似旋转卡壳求凸包的宽度,只是这是求矩形面积的最小值完整代码:#include#include#include#in原创 2017-07-28 19:29:12 · 251 阅读 · 0 评论 -
poj3370 抽屉原理
传送门抽屉原理的题目,对每个数求前缀和,那么总共有n个前缀和,再分别对c取余,若某个前缀和为0,那么这前几个数便是符合题目的答案,如果没有0,由于c至少有两个前缀和取余后相等,那么这两个数之间的数便符合题意,代码O(n)复杂度#include #include #include using namespace std;typedef long long ll;int da原创 2017-08-02 10:56:15 · 392 阅读 · 0 评论 -
UVa 10325 The Lottery 容斥原理
传送门题意:求1-n中不能被给出的m个数整除的个数思路:典型容斥原理,但值得注意的是这里要除的是选出的数的组合的最小公倍数完整代码:#include #include #include #include using namespace std;typedef long long LL;LL divv[20];LL gcd(LL a,LL b){ if(b==原创 2017-08-08 16:06:16 · 270 阅读 · 0 评论 -
hdu4059 容斥原理
传送门题意:求小于n的与n互素的数的四次方的和对1e9+7取模。思路:我们还是考虑一下逆问题,求小于n的与n不互素的数的四次方和,所以还是枚举n的素因子,再用容斥原理,这里需要一个公式就是1+2^4+3^4+...+n^4,百度一下就可以得到,简单推导一下,利用了累加法,考虑了比四次方高一次的五次来求(n+1)^5-n^5=1+5n+10n^2+10n^3+5n^4,那么: n^5原创 2017-08-08 15:09:38 · 336 阅读 · 0 评论 -
容斥经典:求1-m中与n互素的数的个数(hdu4153)
hdu4153是一个很经典的容斥原理的题目,先贴一下链接:http://acm.hdu.edu.cn/showproblem.php?pid=4135题意:求区间a-b内与n互素的数的个数思路:考虑一下逆问题:区间a-b内不与n互素的数的个数,不互素那么一定至少有一个相同的素因子,这样我们就可以枚举n的素因子,来探讨区间a-b中有的n的某个素因子个数,但是并不好计算,所以我们考虑1-(a-原创 2017-08-08 13:42:08 · 4423 阅读 · 0 评论 -
hdu3037 组合数 lucas定理
传送门题意:n个树保存不超过m个豆子的所有方法。思路:首先题目转化成x1+x2+x3+......+xn=a,其中的a由0-m中取,这个不定方程的解的个数由插板法得到,由于x1到xn可以取到0,为了方便计算,方程写为(1+x1)+(1+x2)+(1+x3)+......+(1+xn)=a+n,总共a+n-1个空,要插n-1个板子,分成n组所以结果便是C(a+n-1,n-1)=C原创 2017-07-31 19:53:49 · 230 阅读 · 0 评论 -
hdu2177威佐夫博弈
其实就是分析一下威佐夫博弈的原理,先设小的数量的一堆是a,大的数量的一堆是b如果(b-a)*(sqrt(5)+1)/2等于小的值,那么就可以保证后手赢那么分析先手赢的原理便是先手拿了一次后使新的差值*(sqrt(5)+1)/2等于小的值即可第一次拿有两种情况:1、如果第一次在两堆中拿的数目相同,那么差值是不会变的,那么就能很容易得到拿了一次后两堆中数量小的值 如果原创 2017-06-24 19:25:14 · 317 阅读 · 0 评论 -
hdu5667 Sequence矩阵连乘
传送门:hdu5667 Sequence题意就是根据求f(n)%p思路:列了一下前几项,然后找了一下规律…… f(1)=(a^b)^0 f(2)=(a^b)^1 f(3)=(a^b)^(1+c*1+0) f(4)=(a^b)^(1+c*(1+c)+1)这样就很容易看出来幂次是有规律的原创 2017-06-17 19:38:32 · 219 阅读 · 0 评论 -
poj1061 扩展欧几里得算法
poj1061青蛙的约会首先要列出关系方程:由于两个青蛙是往同一个方向跳跃的,所以两只青蛙相遇的时候,一定是一只青蛙比另一只青蛙多跳整数圈数。设跳跃的次数为t,圈数为p,那么 (x+mt)-(y+nt)=pl即t(n-m)-pl=x-y此题就是求t的最小正整数解其中n-m、l、x-y已知,所以这是一个有两个未知量的不定方程,那么就要用扩展欧几里得算法。扩展欧几原创 2017-04-01 16:06:58 · 276 阅读 · 0 评论 -
求小于n的与n互质的数的和
给出一个N,求1..N中与N互质的数的和ifgcd(n,i)=1 then gcd(n,n-i)=1 (1反证法: 如果存在K!=1使gcd(n,n-i)=k,那么(n-i)%k==0 而n%k=0 那么必须保证i%k=0 k是n的因子,如果i%k=0那么 gcd(n,i)=k,矛盾出现;转载 2017-05-29 22:13:46 · 1731 阅读 · 0 评论 -
hdu1576 扩展欧几里得算法求逆元
hdu 1576(a/b)%MOD就可以化为:( (a%MOD)*_b )%MOD,其中_b就是b%MOD的逆元如果 (b*_b) % MOD == 1的话,那么就称 是 b 的逆元求b关于MOD的逆元就是解这个方程:b*x + MOD*y == 1,求出的x就是b关于MOD的逆元。(令_b=x,那么(b*x)%MOD==1 那么b*x+MOD*y==1,其中y=-(b*原创 2017-04-01 16:36:14 · 521 阅读 · 0 评论 -
bzoj2186: [Sdoi2008]沙拉公主的困惑 逆元
传送门题意:求1-n!中与m!互质的数的个数,其中m小于n。思路:由于m小于n,所以n!一定是m!的倍数,小于m!与m!互质的数的个数为phi(m!),所以1-n!中与m!互质的数的个数为n!/m!*phi(m!)=n!/m!*m!*(1-1/p1)*(1-1/p2)*...(1-1/pk) =n!(1-1/p1)*(1-1/p2)*...(1-1/pk)其中p1-pk是m!的素因子,其实原创 2017-08-03 11:21:04 · 319 阅读 · 1 评论 -
zoj3435 莫比乌斯反演
传送门题意:给定点(x,y,z)与(1,1,1)确定一个长方体,长方体边上及内部总共有x*y*z个点,问从(1,1,1)总共能看到多少个点思路:点的类型分为三种:(1)在长方体内部、(2)在长方体面上(不包括与(1,1,1)共线的点)、(3)与(1,1,1)共线的点;如果我们把每个坐标都减1,可以发现:(1)如果坐标里有两个0,那么只有另一个数为1才可以看见、(2)如果坐标里有一个0,那么原创 2017-08-13 10:43:03 · 342 阅读 · 0 评论 -
nefu628 组合数取模,模不是素数的情况
传送门题意:求C(m+n-2,m-1)%p,其中1思路:数据范围并不是很大,但关键是p不一定是素数,所以传统求逆元的方法如费马小定理或者扩展欧几里得都不适用了,C(m+n-2,m-1)=(m+n-2)!/((n-1)!*(m-1)!),可以把这个数暴力分解素因子,计算其中包含的素因子个数,然后再用快速幂计算,累乘就得到了最后的结果。十分暴力。#include#include#inc原创 2017-08-03 15:55:28 · 1132 阅读 · 0 评论 -
51nod oj 1298 圆与三角形
/**如果三角形的三个点都在圆内,那么一定不相交;如果三个点都在圆外,那么可能相交也可能不相交;其它情况一定相交(某个点在圆上或者有在圆内的有在圆外的)这题注意用longlong**/#include#include#include#include#include#includeusing namespace std;typedef long long ll;struct p原创 2017-07-26 20:57:56 · 256 阅读 · 0 评论