拓展欧几里得算法,由欧几里得算法(辗转相除法)得来。 先介绍欧几里得算法: 求两个数的最大公约数,根据简单的证明(就不证了)可得: gcd(a,b)==gcd(b,a%b); 所以可以写出代码: 接下来是拓展欧几里得算法: 首先我们需要知道gcd(a,b)==gcd(b,a%b)==gcd(b,a- ...
分类:
其他好文 时间:
2017-07-16 20:47:40
阅读次数:
201
先来介绍下这个名词的来源: 摘自百度百科: 《九章算术》是中国古代的数学专著,其中的“更相减损术”可以用来求两个数的最大公约数,原文是:可半者半之,不可半者,副置分母、子之数,以少减多,更相减损,求其等也。以等数约之。 白话文译文: (如果需要对分数进行约分,那么)可以折半的话,就折半(也就是用2来 ...
分类:
编程语言 时间:
2017-07-16 15:03:56
阅读次数:
435
题目背景 全场基本暴力 题目描述 输入输出格式 输入格式: 如图 输出格式: 如图 输入输出样例 输入样例#1: 如图 输出样例#1: 如图 输入样例#1: 如图 输出样例#1: 如图 说明 如图 这题用到了容斥原理和线性筛的一些东西, 表示没怎么看懂、。。。 ...
分类:
其他好文 时间:
2017-07-16 09:56:12
阅读次数:
211
欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。 基本算法:设a=qb+r,其中a,b,q,r都是整数,则gcd(a,b)=gcd(b,r),即gcd(a,b)=gcd(b,a%b)。 递归版算法: 递归优化版: 迭代版: 扩展欧几里德算法 基本算法:对于不完全为 0 的非负整数 a ...
分类:
编程语言 时间:
2017-07-16 00:49:26
阅读次数:
353
[codevs1001]舒适的路线 题目描述 Description Z小镇是一个景色宜人的地方,吸引来自各地的观光客来此旅游观光。Z小镇附近共有N(1<N≤500)个景点(编号为1,2,3,…,N),这些景点被M(0<M≤5000)条道路连接着,所有道路都是双向的,两个景点之间可能有多条道路。也许 ...
分类:
其他好文 时间:
2017-07-14 20:33:13
阅读次数:
185
2301: [HAOI2011]Problem b Description 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数。 Input 第一行一个整数n,接下来n行每行五个整数,分别表示a、b、c、 ...
分类:
其他好文 时间:
2017-07-13 19:09:58
阅读次数:
154
思路: 首先如果数列的最大公约数大于1,直接输出即可。 否则,设对原数列中的ai和ai+1进行一次操作,分别变为ai - ai+1和ai + ai+1。设新数列的最大公约数为d,则由于d|(ai - ai+1)并且d|(ai + ai+1)得到d|(2ai)且d|(2ai+1)。则d|gcd(a1, ...
分类:
其他好文 时间:
2017-07-13 01:03:11
阅读次数:
463
本文所选的例子来自于《Advanced Bash-scripting Gudie》一书,译者 杨春敏 黄毅 在改编这个脚本的时候,我的考虑点主要有以下: 1. 所传的参数是不是要排除非整数的情况? 非整数的情况第一次我用echo $i | sed '/s/^[0-9]*$/''/g' && echo ...
分类:
其他好文 时间:
2017-07-12 13:36:01
阅读次数:
139
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。在循环中,只要除数不等于0,用较大数除以较小的数,将小的一个数作为下一轮循环的大数,取得的余数作为下一轮循环的较小的数,如此循环直到较小的数的值为0,返回较大的数,此数即为最小公约数,最小公倍数为两数之积除以最小公倍数。 ...
分类:
其他好文 时间:
2017-07-09 21:59:15
阅读次数:
127
设a和b的最大公约数是d,那么: 1. d是用sa+tb(s和t都是整数)能够表示的最小正整数 证明:设x=sa+tb是sa+tb能够表示出的最小正整数。首先,有d|x,证明如下: 因此有x>=d,现在只要证明x是公约数,就可以证明x就是这个最大公约数了。只需证明x|a且x|b。 先证x|a。设a= ...
分类:
其他好文 时间:
2017-07-09 10:32:37
阅读次数:
152