1.LCM Range最小公倍数 其实就是求 l 到 r 这么多自然数的最小公倍数。 需要注意LCM的求法, 理论:a与b的最小公倍数=a*b/gcd(a,b)。 这里,lcm=ans*i*gcd(ans,i) 在后面的学习中由于ans*i可能很大,容易爆 所以可以写作:lcm=ans*gcd(an ...
分类:
其他好文 时间:
2017-05-29 22:23:21
阅读次数:
333
传送门 这题好妙啊,我好菜啊……居然连辗转相减都看不出来,我是不是没救了…… …… 考虑题目给出的两个条件: $f_{a,b}=f_{b,a}$,这个就是对称性。 $b×f_{a,a+b}=(a+b)×f_{a,b}$,这个有点意思。整道题明明就是这里最难好嘛 先不管两个$f_{a,b}$之间到底有 ...
分类:
其他好文 时间:
2017-04-13 11:45:54
阅读次数:
268
题意:给你一张n*m(n,m<=1000)的网格图,问有多少个顶点在格点上的三角形(共线不算). 首先补集转化,不考虑共线的方案是C(n*m,3),减去共线方案数即可. 对于共线方案数的统计,首先可以考虑O(n^4)暴力枚举两个端点(x1,y1)(x2,y2),中间的点有gcd(x2-x1,y2-y ...
分类:
其他好文 时间:
2016-10-24 15:52:19
阅读次数:
295
#include <iostream> int main() { using namespace std; int m, n; cin >> n >> m; while (m != n) { while (m>n) { m = m - n; } while (n>m) { n = n - m; } ...
分类:
其他好文 时间:
2016-05-03 22:14:21
阅读次数:
894
#include int main(){ using namespace std;int m, n;cin >> n >> m; while (m != n) { while (m>n) { m = m - n; } while (n>m) { n ...
分类:
其他好文 时间:
2015-09-20 16:13:18
阅读次数:
117
学习C++入门级的题目,求最大公约数和最小公倍数,这里介绍两种求最大公约数的方法,即辗转相除法和辗转相减法。辗转相除法的原理自行百度,辗转相减法的原理就是只要两数不想等就用大数减小数,直至相等,求最小公倍数的方法就是用两数的乘积除以最大公约数。#includeusing namespace st.....
分类:
其他好文 时间:
2014-12-20 00:37:45
阅读次数:
306
最大公约数有下面两种方法:
辗转相除法:又名欧几里德算法(Euclidean
algorithm)乃求两个正整数之最大公约数的算法。
辗转相减法:即尼考曼彻斯法,其特色是做一系列减法,从而求得最大公约数。
以下为Java代码:
public class JavaBase
{
static public int gcd1_1(int x, int y) //非递...
分类:
编程语言 时间:
2014-12-11 17:34:34
阅读次数:
188
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1876分析:以为辗转相减会TLE呢……但是好像没这个数据……就这么水过去了……辗转相减求a,b的gcd其实可以优化的:1、若a为偶数,b为奇数:gcd(a,b)=gcd(a/2,b)2、若...
分类:
其他好文 时间:
2014-12-03 23:17:49
阅读次数:
208
最大公约数1. 用最基本的循环遍历的方法2. 用辗转相除法3. 用辗转相减法See also: http://baike.baidu.com/view/47637.htm 1 #include 2 using namespace std; 3 4 int CommonDivisor( int x,....
分类:
编程语言 时间:
2014-11-20 15:12:23
阅读次数:
205