欧几里得和扩展欧几里得算法 题目: poj 1061 poj 2142 双六 扩展欧几里得算法详解 先说欧几里得算法:欧几里得算法辗转相除求\(gcd\).求\(a.b\)的\(gcd\),则利用的性质是:\(gcd(a,b)=gcd(b,a\%b)\),而\(gcd(a,0)=a\),这样,辗转除下去,当第二个参数为0,第一个参数就是最大公约数. int gcd(int a,int b){ while(b!=0){ int tmp = a%b; a = b; b = tmp; } return…
青蛙的约会 writer:pprp Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 119716 Accepted: 25238 Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是很乐观的,它们觉得只要一直朝着某…
题目链接: BZOJ: https://www.lydsy.com/JudgeOnline/problem.php?id=1477 POJ: https://cn.vjudge.net/problem/POJ-1061 题目描述: Description 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置.不过青蛙们都是…
http://poj.org/problem?id=1061 思路: 搞懂这个扩展欧几里得算法花了不少时间,数论真的是难啊. 含义:找出一对整数,使得ax+by=gcd(a,b). 接下来看这道题目,(x+mt)-(y+nt)=kl,转换成(n-m)t+kl=x-y. 令a=n-m,b=l,c=x-y,那么上式就变成了at+kb=c,之后就参照上面的算法来计算就行,具体参见代码. #include<iostream> #include<algorithm> #include<…
求最小公约数,最easy想到的是欧几里得算法,这个算法也是比較easy理解的,效率也是非常不错的. 也叫做辗转相除法. 对随意两个数a.b(a>b).d=gcd(a.b),假设b不为零.那么gcd(a,b)=gcd(b.a%b) 证明: 令 r=a%b,即存在k,使得 a=b*k+r,那么r=a-b*k:显然r>=0,  r%d=((a%d)-(b*k)%d)%d.由于a%d=b%d=0,所以r%d=0: 因此求gcd(a,b)能够转移到求gcd(b,a%b).那么这就是个递归过程了.那什么时…
greatest common divisor(最大公约数) 1.欧几里得算法 欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数. 其计算原理依赖于下面的定理: 两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数. 最大公约数(greatest common divisor)缩写为gcd. gcd(a,b) = gcd(b,a mod b) (不妨设a>b 且r=a mod b ,r不为0),以此辗转相除得到最终结果.   证明: a可以表示成a = kb + r…
void resetNumA(string numAStr); //使用string重置numB void resetNumB(string numBStr); //将数组转换为字符串,用于输出 string getNumString(int* num); //判断两个数字哪个大 int compare(string numAStr, string numBStr); //加法 string sum(string numAStr, string numBStr); //减法 string sub…
说在开头. 出于对欧几里得的尊重,先简单介(cou)绍(ge)一(zi)下(shu).. 欧几里得,古希腊人,数学家.他活跃于托勒密一世时期的亚历山大里亚,被称为“几何之父”. 他最著名的著作<几何原本>是欧洲数学的基础,提出五大公设,欧几里得几何,被广泛的认为是历史上最成功的教科书. 欧几里得也写了一些关于透视.圆锥曲线.球面几何学及数论的作品.(https://baike.baidu.com/item/欧几里得/182343?fr=aladdin) --------------------…
1,贪心算法 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的的时在某种意义上的局部最优解. 贪心算法并不保证会得到最优解,但是在某些问题上贪心算法的解就是最优解.要会判断一个问题能否用贪心算法来计算.贪心算法和其他算法比较有明显的区别,动态规划每次都是综合所有问题的子问题的解得到当前的最优解(全局最优解),而不是贪心地选择:回溯法是尝试选择一条路,如果选择错了的话可以“反悔”,也就是回过头来重新选择其他的试试. 1.1…
题目 3在十进制下满足若各位和能被3整除,则该数能被3整除. 5在十六进制下也满足此规律. 给定数字k,求多少进制(1e18进制范围内)下能满足此规律,找出一个即可,无则输出-1. 题解 写写画画能找到规律,即是求与k互质的数x,x进制下即能满足上述规律. 相关 求最大公约数:辗转相除法(又叫欧几里得算法) 欧几里德定理: gcd(a, b) = gcd(b , a mod b) ,对于正整数a.b. 其中a.b大小无所谓.当a值小于b值时,算法的下一次递归调用就能够将a和b的值交换过来. 代码…