SRM遇到的⼀个数论技巧——最⼤公约数和最⼩公倍数的关系
最⼤公约数L和最⼩公倍数G的关系:1、L%G == 0;
2、设A, B的最⼤公约数为G, 最⼩公倍数为L,则:L/G = (A/G)*(B/G)3、gcd(A/G, B/G) = 1;
题⽬:给出⼀对数A, B 的最⼤公约数G, 最⼩公倍数L。这⾥A, B有多种组合。,求A,B的⼀种组合使得A + B最⼩。如果没有则输出-1(SRM535 div2 500pt)(G <= 10^12, L<=10^12)
猛的⼀看数据很⼤。不过⽤上前边的定理就可以解决了。领X = L/G;
枚举A/G的值(不超过sqrt(X)),得到B/G的值。判断是否满⾜定理3。在所有满⾜的情况中找最⼩的ans = min(ans, (A/G + B/G))。最后结果为ans*G 代码:
1 #include 2 #include 3 #include