
算法总结
日常算法学习随笔
Mr顺
acm/蓝桥杯刷题狂,熟悉掌握Java/python/C++/C后端语言,前端vue/jQuery/JavaScript/jsp也能写,喜欢研究底层逻辑,请多指教。
展开
-
2020十月蓝桥杯B组省赛
试题 A: 门牌制作本题总分:5 分【问题描述】小蓝要为一条街的住户制作门牌号。这条街一共有 2020 位住户,门牌号从 1 到 2020 编号。小蓝制作门牌的方法是先制作 0 到 9 这几个数字字符,最后根据需要将字符粘贴到门牌上,例如门牌 1017 需要依次粘贴字符 1、0、1、7,即需要 1 个字符 0,2 个字符 1,1 个字符 7。请问要制作所有的 1 到 2020 号门牌,总共需要多少个字符 2?【答案提交】这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个原创 2020-10-18 20:44:18 · 7963 阅读 · 2 评论 -
常见的排序(java)
常见的排序(java)1.冒泡排序选择排序快速排序1.冒泡排序代码:public static void bubbleSort(int[] arr) { //arr = {5,4,3,2,1}; for(int i = 0;i<arr.length-1;i++){ for(int j = 0;j<arr.length-1-i;j++){ if(arr[j] > arr[j+1]){ int te = arr[j]; arr[j原创 2020-08-28 14:47:53 · 1259 阅读 · 0 评论 -
数学---同余与逆元
同余在数论中非常实用,它用类似处理等式的方式来整除关系,非常简便。1.同余两个整数a,b和一个正整数m,如果 a 除以 m 所得的余数 和 b除以m所得的余数相等,即 a mod m =b mod m,称为 a和 b对于m同余,m称为同余的模。同余的符号记为 a ≡ b( mod m)。2.一元线性同余方程ax ≡ b( mod m)...原创 2020-07-31 19:27:06 · 3194 阅读 · 1 评论 -
数学---扩展欧几里算法与二元一次方程的整数解
从问题出发:给出整数a、b、n,问方程: ax+by=n 什么时候有整数解?有解的充分必要条件是 gcd(a,b)可以整除n。简单解释如下:令 a = gcd(a,b)a′、b= gcd(a,b)b′,有 ax+by=gcd(a,b)****(a′x+b′y)=n;**如果x、y、a′ 、b′都是整数,那么b必须是 gcd(a,b)的倍数才有整数解 **。例如 4x + 6y = 8、2x + 3y = 4 有整数解,4x + 6y=7则没有整数解。如果确定有解,一种解题方法是先找到一个解(x₁原创 2020-07-29 12:36:07 · 2408 阅读 · 0 评论 -
数学---GCD、LCD
最大公约数GCD和最小公倍数LCM是竞赛中常见的知识点,虽然这两个知识点很容易理解,但往往会与其他知识点结合起来出综合题就不容易。1.最大公约数GCD整数a和b的最大公约数记为gcd(a,b)。在编程时候有两种写法。(1)经典的欧几里得算法,用辗转相除法求最大公约数,模板如下: int gcd(int a,int b){ return b == 0 ? a:gcd(b,a%b); }时间复杂度差不多是O(㏒₂ⁿ),非常快。(2)或者直接用C++的内置函数求GCD:std::__gcd(原创 2020-07-29 11:30:08 · 4923 阅读 · 0 评论 -
数学---快速幂
1. 快速幂概念:快速幂以及扩展的矩阵快速幂,由于场景比较常见,因此竞赛常出现。问题:高效的计算a的n次幂,这里n很大分析:假如a=10,n=9,这样的情况就连自带高精度的Java也无法处理,一是数字太大,二是计算时间很长。使用快速幂解法1:先算a²,之后再算(a²)²,巧妙的使用了分治法,时间复杂度为O(㏒₂n) 上代码: int fastPow(int a,int n){ if(n==1) return a; int temp=fastPow(a,n/2);/原创 2020-07-28 18:41:13 · 697 阅读 · 2 评论