python算法合集(更新中。。。)

一、数论算法

1.求两数的最大公约数

import sys

def gcd(p, q):
    if q == 0: return p
    return gcd(q, p%q)

def main():
    p = int(sys.argv[1])
    q = int(sys.argv[2])
    print(gcd(p, q))

if __name__ == ‘__main__‘:
    main()

原文地址:https://www.cnblogs.com/mocuishle/p/8476632.html

时间: 2024-11-01 17:22:52

python算法合集(更新中。。。)的相关文章

数论模板合集(更新中)

注:均为开\(long\ long\)且未取模 #include<cstdio> #include<algorithm> #include<ctype.h> #include<vector> #include<queue> #include<cstring> #define lowbit(x) (x&-x) #define ll long long #define ld double #include<map> #

【好记性不如烂笔头】常用五大算法合集--日后慢慢更新

分冶法: 分冶法之归并排序 回溯法: 贪心算法: 分支界限法: 动态规划法: 先把目录写在这,日后慢慢更新~ 参考文献:佳佳hi的博客 算法论

[算法整理]树上求LCA算法合集

1#树上倍增 以前写的博客:http://www.cnblogs.com/yyf0309/p/5972701.html 预处理时间复杂度O(nlog2n),查询O(log2n),也不算难写. 2#st表(RMQ) 首先对一棵树进行dfs,得到欧拉序列,记录下每个节点的第一次出现位置. (先序遍历这棵树,访问到的节点(无论是从深的一层返回还是父节点访问)就加入到序列中,序列长度为2 * n - 1) 根据欧拉序列神奇的特性,两个点第一次出现的位置之间,深度最小的一个点,是这两个点LCA(反正我是不

Python拾遗(持续更新中)

虽然曾经使用Python做过几个小网站的后台,但未能触及Python的方方面面.本次参加51cto网的老男孩Python运维课程,来查漏补缺. 本篇博文将会持续更新,不断加入本人遗漏的Python知识点. 4月5日-4月11日: 在Linux下,使用 #!/usr/bin/python3 或者 #!/usr/bin/env python3 来指定改Python程序运行时使用的python版本 使用 type(变量名) 查询变量类型.存在 type(a) == str 这种用法. 使用 id(变量

排序算法合集(冒泡,选择,插入,堆排,快排)

1.冒泡排序 最初在学c语言时,老师就教的这个排序算法,原理比较简单:从数组下标为0处开始遍历,相邻之间进行比较,若a[i]>a[i+1],则exchange(a[i],a[i+1]),当然也可以将小的往后传递,将此过程不断进行,那么最后数组就有序了. 要点:(1)每遍历一遍,末尾就得到一个最大值(或最小值),那么接下来的遍历是不是每次都减少一个元素就好了,因为后边的已经排好序了啊. (2)遍历n-1遍就排好序了,因为最后一遍只剩一个元素了,它一定放那儿,所以最后一遍就不用遍历了. 当然如果数据

Python面试题整理-更新中

几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路人甲的回答 如何学习Python爬虫[入门篇] - 学习编程 - 知乎专栏 Python常用库整理 - 学习编程 - 知乎专栏 学好Python的11个优秀资源 - 学习编程 - 知乎专栏 在开头依然推荐一个Python面试题整理比较好的网站:GitHub : 关于Python的面试题.同样推荐几道

Python算法题----在列表中找到和为s的两个数字

列表data的值为[1, 3, 4, 5, 8, 9, 11],找出这个列表中和为13的两个数字的所有组合.这个好找,上过幼儿园大班的,估计都能找出来.4+9=13, 5+8=13.如何用python写一个函数来实现呢. 解法一: 超级大循环 最容易想到的就是遍历啊.嵌套循环,外层循环遍历全部列表,内层循环遍历当前元素位置之后的所有元素.内层循环中将两个数字相加,等于13就break.妥妥找到. def equalSum01(data=None, twosum=13):     result =

排序算法合集

排序算法复习大致结束了,主要有以下几种:冒泡排序.选择排序.简单插入排序.希尔排序.归并排序.快速排序.堆排序. #include <iostream> #define MAXSIZE 1000 using namespace std; class SqList{ public: SqList():length(0){} SqList(int length1,int value=0):length(length1) { for(int i=0;i<length;++i) { data[i

字符串相关算法合集

...日后会慢慢补(flag!)先来讲讲基本的 一.字符串Hash 将字符串用一个数表示,常用的写法有: 1.自然溢出 2.单Hash 3.双Hash 前两个会被精心构造的串卡掉,最后一个虽然目前卡不掉,但是出题人可以卡你常数. 所以这个算法很Naive?不是的 我们来看一道题 bzoj1014 用splay维护字符串的最长公共前缀,那么问题来了,没有一种OI比赛中常用的数据结构能维护一个动态的字符串 这时字符串哈希就派上了用场 我们用一个哈希值来表示字符串 在splay上跑一个二分查找就好了