348B - Apple Tree 我们设最后答案为 x , 我们我们就能用x表示出所有节点下面的苹果个数, 然后用叶子节点求lcm, 取最大的可行解。 #include<bits/stdc++.h>#define LL long long#define fi first#define se second#define mk make_pair#define PLL pair<LL, LL>#define PLI pair<LL,
Gcd▪ 欧几里得算法又称辗转相除法,用于计算两个正整数 a, b 的最大公约数。▪ 计算公式为 gcd(a,b) = gcd(b,a mod b)。▪ 公式无需证明,记忆即可。▪ 如果要求多个数的最大公约数。易证,每次取出两个数再放回去,不会影响答案正确性。▪ 比如 a,b,c 三个数,答案就是 gcd(gcd(a,b),c) in
最简单的gcd算法: int gcd( int a, int b) { if(a<b)swap(a,b); if(b==0) return a; else return gcd(b,a%b); } 最常用的gcd算法: int gcd(int a,int b){return a==0?b:gcd(b%a,a);} 经过优化的gcd算法(分奇偶数): 1 int gcd(int x,int y) 2 { 3 if(x<y)
同余方程组: 先来看一道题目:有物不知其数,三三数之剩二;五五数之剩三;七七数之剩二。问物几何? 然后我们可以做如下变换,设x为所求的数。 x%3=2 x = a1(%m1) ① x%5=3 ===> x = a2(%m2) ② x%7=2 x =
>Description 给出某两个数的最大公因数和最小公倍数,要求求出在两数之间的差最小的情况下,这两个数的值。 >Input 输入n,m。表示最大公因数n,与最小公倍数m。 >Output 输出这两个数的差。 >Sample Input 6 36 >Sample Output 6 >解题思路 按照短除法 12和18为上面6和36所求的