【Exgcd】扩展欧几里得算法
Description 欧几里德算法 又称辗转相除法,是指用于计算两个正整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式 。 扩展欧几里德算法 是用来在已知a, b,求解一组 x,y 使得:ax + by = gcd(p,q) (解一定存在,根据数论中的相关定理)。 本题任务 :给定任意整数a,b,c,求方程 ax + by = c 的整数解,输出其中x是最小的正整数的一组。 Input 若干行,每行一组数据:a,b,c。他们都是int范围内的整数。 Output 每组数据输出一行,若给定方程没有整数解,输出"No solution",否则输出x是最小的正整数的一组。 Sample Input 1 1 1 1 1 2 1000 12 20 7 27 -45 18 6 15 9 Sample Output 1 1 0 2 499 No solution 4 2 4 -1 Hint a,b,c在int范围内,且都不为0。 1.理论部分 欧几里得算法 求最大公因数: int gcd(int a, int b) { if(b == 0) return a; else return gcd(b, a%b); } 其中模运算可定义为:(以下除法都是指下取整除法) a%b = a-a/b*b 扩展欧几里得算法: 已知整数a、b