随笔分类 -  数论

摘要:题意:给出一串无序的数列,编写一个O(n)的算法求解排序后相邻两个数的最大差值。 解法: nlog(n)的算法大家应该很容易就能想到,只要排序一下再扫描一遍即可。但是为了构造O(n)的算法,肯定不能使用常规排序算法,我们先考虑一下桶排序(非正解),开一个能囊括数值范围的数组,把数据作为下标放进去,再 阅读全文
posted @ 2018-09-06 20:01 Luke_Ye 阅读(547) 评论(0) 推荐(0)
摘要:#include #include #include #include #include #include #include #include #include #include #define ll long long int #define eps 0.0001 #define fo1(s,e) for(ll i=s;i>t; while(t--){ long lon... 阅读全文
posted @ 2017-10-27 14:25 Luke_Ye 阅读(705) 评论(0) 推荐(0)
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=6198 F0=0,F1=1的斐波那契数列。 给定K,问最小的不能被k个数组合而成的数是什么。 赛后才突然醒悟,只要间隔着取k+1个数,显然根据斐波那契数列规律是不存在把其中两个数相加的结果又出现在数列中的情况(有特 阅读全文
posted @ 2017-09-10 21:57 Luke_Ye 阅读(163) 评论(0) 推荐(0)
摘要:给定A,B,对于A^B的每一个因子,M为其因子的因子数的三次方求和。 容易推导得出A^B的每一个因子都是A的质因子的组合(质因子可重复利用),其因子数自然等于所使用的每个质因子的数量乘积。 假设A由质因子a1,a2,a3组合而成,对应数量为k1,k2,k3,那么A的因子数为(k1+1)*(k2+1) 阅读全文
posted @ 2017-08-30 11:35 Luke_Ye 阅读(254) 评论(0) 推荐(0)
摘要:扩展欧几里得可以计算出gcd的同时,计算出一组最小特解,以表示其通解 推导过程见http://blog.csdn.net/zhjchengfeng5/article/details/7786595 其中通解: x = x0 + b*t; y = y0 + a*t; 而乘法逆元则是在计算(a/b)%m 阅读全文
posted @ 2017-07-18 16:00 Luke_Ye 阅读(206) 评论(0) 推荐(0)
摘要:题目要求是求出a!/b!(a>=b)的结果,让其不断做除法,最多能做多少次。这个问题首先可以转化为求a!中所有质因子个数-b!中所有质因子个数。以前做过一道快速求某个阶乘对一个素数的因子个数的题(http://www.cnblogs.com/LukeStepByStep/p/5889679.html 阅读全文
posted @ 2017-06-16 11:20 Luke_Ye 阅读(246) 评论(0) 推荐(0)
摘要:问题描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列,求最后出列的人的原始编号。 朴素算法:链表 阅读全文
posted @ 2016-09-29 00:38 Luke_Ye 阅读(853) 评论(0) 推荐(0)
摘要:题意哇:求N!末尾多少个0。 很容易想到转化为求N!中5因子的个数。但是从数据范围来看必然不可能一个一个算出来。 所以这里借用数论的一个知识。 如果p是素数,那么n!中p因子的个数可以表示为1-n中整除p^1的个数+1-n中整除p^2的个数...(p^x<=n) 而不难看出,1-n中整除p的个数小于 阅读全文
posted @ 2016-09-20 17:26 Luke_Ye 阅读(213) 评论(0) 推荐(0)