对于求n个数的gcd的想法
来源:互联网 发布:linux c程序编译 编辑:程序博客网 时间:2024/05/24 23:16
一点小小的思路。
其实也没什么, 就是把n个数依次求gcd就行了。 每求过一次两数的gcd, 就把原来的两数删除并把新的gcd加入即可。 时间复杂度O(n)。
证明:
若原来的n个数分别为a1,a2,...,an, 记结果ans = gcd(a1,a2,...an), 那么对于任意ai, 有ans | ai。 从集合的角度来看, 若Ai为ai的因数集合, 那么ANS = A1 ∩ A2 ∩... ∩ An。 现在我们可以得出结论, ANS ∈ Ai ∩ Aj, 故原方法成立。
#include <cstdio>using namespace std;int gcd(int x, int y){ if (!y) return x; return gcd(y, x%y);}int main(){ int n, x, ans; scanf("%d", &n); scanf("%d", &ans); for (int i = 1; i < n; ++i) { scanf("%d", &x); ans = gcd(ans, x); } printf("%d\n", ans); return 0;}
0 0
- 对于求n个数的gcd的想法
- 求两个或N个数的最大公约数(gcd)和…
- 【ZOJ】4846 GCD Reduce(求n个数的最大公约数)
- CF582A给出n个数的相互GCD,求这n个数,map的使用
- 对于常用软件的N多想法!
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求两个或N个数的最大公约数(gcd)和最小公倍数(lcm)的较优算法
- 求n个数的平均值
- 求N个数的最小公倍数
- 求N个数的最小公倍数
- 求N个数的最小公倍数
- 求n个数的和
- 求n个数的最小公倍数
- 求N个数的最小公倍数
- ANDROID自定义视图——onLayout源码 流程 思路详解
- C#反射
- timus 2002. Test Task
- ANDROID自定义视图——onMeasure,MeasureSpec源码 流程 思路详解
- 下载电影、字幕的好地方
- 对于求n个数的gcd的想法
- Android Studio VS Eclipse (还在用Eclipse?你OUT了!)
- 黑马程序员之IOS学习总结——05 C语言中的指针
- xamarn.android binding parse sdk for a week to work
- solaris10的系统常用检查命令
- timus 2031. Overturned Numbers
- Java对存储过程的调用方法
- 学习JMF框架遇到的问题及总结
- UVA - 10306 e-Coins