算法
文章平均质量分 70
算法
Lili Liang
M.S. student @Carnegie Mellon University, SDE Full-time @ByteDance | GitHub: https://github.com/leungll | Contact me: l.liang0316@gmail.com.
展开
-
数论之扩展欧几里得,费马小定理,欧拉定理 + 求最小乘法逆元
目录1 逆元定义2 欧几里得算法(求最大公约数)3 扩展欧几里得算法3.1 预备知识3.2 关于扩展欧几里得算法3.3 模板3.4 算法推导过程3.5 利用拓展欧几里得算法求逆元前两天二刷了《模仿游戏》,Alan Turing在二战中研制的图灵机破译了德军号称牢不可破的ENIGMA密码机。这部剧让我对计算机产生了一些新的理解,结合以前修过的密码学原理,因此想记录一下之前没掌握好的数论知识,并且...原创 2020-03-11 22:13:36 · 1164 阅读 · 1 评论 -
快速幂 && 快速乘原理讲解(模板)
引言:我们发现,在int型下使用pow函数求5的三次方,结果为124。如图:原因:pow函数的返回值为double型,因浮点数长度问题,存在截断误差。解决方法:将变量定义为double型有没有更快求幂的方法?假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b),即是O(n)级别。但快速幂能做到O(logn)的复杂度。快速幂...原创 2018-08-27 21:49:46 · 24210 阅读 · 4 评论 -
快速幂 && 快速乘取模(模拟大数模幂运算,解决乘法爆long long问题)
目录引言1 原因分析2 快速幂取模(大数模幂模拟)3 验证引言在RSA密码中,当收到密文C时,可使用私钥解开,计算公式为X = Ce mod n X\,=\,C^{e}\,mod\,nX=Cemodn如果想让你计算 20190324823816093931522017 mod 100173399306316714120190324^{823816093931522017}\,mod\,1...原创 2020-03-12 09:59:10 · 2257 阅读 · 2 评论 -
最短路径算法之 Dijkstra && BellmanFord(模板)
目录1 Dijkstra算法1.1 算法模板1.2 例题Problem DescriptionInput SpecificationOutput SpecificationSample InputSample Output题解2 BellmanFord2.1 讲解2.2 例题问题描述输入格式输出格式样例输入样例输出数据规模与约定题解1 Dijkstra算法适用范围:不能解决带有负边的图1.1 算法模板#include <iosream>#include <cstdio>原创 2020-05-26 21:16:45 · 541 阅读 · 0 评论 -
斐波那契数列的递归与循环实现及复杂度分析
目录一、斐波那契数列的定义二 、递归实现三、循环实现四、补充一、斐波那契数列的定义二 、递归实现经典例题(杭电2041):AC代码:#include <iostream>using namespace std;int f[41];int main(){ int num,m; cin >&g...原创 2018-09-16 10:06:27 · 8522 阅读 · 6 评论 -
【洛谷 1072 && 蓝桥杯 算法训练 ALGO - 37】Hankson 的趣味题
文章目录1 题目题目描述输入格式输出格式样例输入样例输出样例说明2 分析3 题解题目链接:http://lx.lanqiao.cn/problem.page?gpid=T991 题目题目描述Hanks 博士是BT (Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫Hankson。现 在,刚刚放学回家的Hankson 正在思考一个有趣的问题。 今天在课堂上,老师讲解了如何求两个正...原创 2020-04-28 23:05:57 · 643 阅读 · 0 评论 -
【洛谷 1045 && 蓝桥杯 算法训练 ALGO - 26】麦森数(二分 + 高精度)
目录1 题目问题描述输入格式输出格式样例输入样例输出2 题目分析3 题解1 题目问题描述形如 2P−12 ^ {P}-12P−1 的素数称为麦森数,这时 PPP 一定也是个素数。但反过来不一定,即如果 PPP 是个素数, 2P−12 ^ {P}-12P−1 不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是 P=3021377P=3021377P=3021377 ,它有...原创 2020-04-02 22:19:43 · 620 阅读 · 0 评论 -
【蓝桥杯 算法训练 ALGO - 34】纪念品分组(贪心 + 排序)
一、背包相关问题1.最优装载问题:给出n个物体,第i个物体重量为wi。选择尽量多的物体,使得总重量不超过c。分析:由于只关心物体的数量,所以装重的没有装轻的划算。只需把所有物体按重量从小到大排序,依次选择每个物体,直到装不下为止。这是一种典型的贪心算法,它只顾眼前,但却能得到最优解。样例输入5 205 2 6 8 9样例输出:3题解:#include...原创 2018-05-22 23:12:16 · 355 阅读 · 0 评论 -
【蓝桥杯 算法提高 ADV - 299】宰羊( 区间 dp )
目录1 题目题目描述输入格式输出格式样例输入样例输出2 分析3 题解4 References1 题目题目描述炫炫回了内蒙,肯定要吃羊肉啦,所有他家要宰羊吃。 炫炫家有N只羊,羊圈排成一排,标号1~N。炫炫每天吃掉一只羊(这食量!其实是放生啦),吃掉的羊的邻居会以为它被放生了,然后又会告诉他们的邻居,这样一直传播下去,除非某个邻居已经被“放生”了。每一天,所有知道某羊被“放生”了这个消息...原创 2020-04-09 01:17:45 · 632 阅读 · 0 评论 -
《算法竞赛入门经典 第2版》第2章课后题题解(一)
习题2-1 水仙花数(daffodil)题目:输出100-999中的所有水仙花数。若3位数ABC满足ABC=A^3+B^3+C^3,则称其为水仙花数。例如153=1^3+5^3+3^3,所以153是水仙花数。题解:#include<stdio.h>int main(){ int a,b,c,n; for(n = 100;n < 1000;n++)...原创 2018-02-06 15:44:02 · 358 阅读 · 0 评论 -
《算法竞赛入门经典 第2版》第2章课后题题解(二)
习题2-5 分数化小数(decimal)题目:输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位,a,b<=10^6,c<=100。输入包含多组数据,结束标记为a=b=c=0.样例输入:1 6 40 0 0样例输出:case 1: 0.1667题解:#include<stdio.h>int main(){ int a...原创 2018-02-09 14:06:55 · 280 阅读 · 0 评论 -
《算法竞赛入门经典 第2版》知识点总结
1.整数 - 浮点数 = 浮点数。2.圆周率表示:const double pi = acos(-1.0)。(其中"acos"为求反余弦)。注:尽量用const关键字声明常数。3.在算法竞赛中,不要使用头文件conio.h,包括getch()、clrscr()等函数。4.在算法竞赛中,每行输出均应与回车符结束,包括最后一行。输出的每两个数或者字符串之间应与单个空格隔开。5.如果有多...原创 2018-02-02 20:43:03 · 321 阅读 · 0 评论 -
Warshall算法的实现(两种方式)
法一:import java.util.*;public class TestDemo { public static void main(String[] args){ System.out.print("请输入矩阵的阶数:"); Scanner input = new Scanner(System.in); int n = input.nextInt(); Syst...原创 2018-05-12 10:24:23 · 5017 阅读 · 0 评论 -
算法中的一些实用技巧
目录一、组合数的计算:二、素数的判定:三、用函数交换变量(指针作参数):一、组合数的计算:C(n,m) = n! / ((n-m)! * m!)(m ≤ n)long long C(int n, int m){ if(m < n - m){ m = n - m; } long long ans = 1; for(i...原创 2018-09-06 23:00:12 · 324 阅读 · 0 评论