华为编程大赛第四轮第一题:求多个正整数的最大公约数!C++
2014-05-05 21:06
295 查看
计算多个正整数的最大公约数
描述:计算多个(最多100个,最少一个)正整数(正整数的范围是:1~20000)的最大公约数。公约数是指:能被所有的整数整除的整数。
运行时间限制:无限制
内存限制:无限制
输入:
第一个数字是整数的数量,后面是每个整数的具体值;
备注:读取的时候,不需要读入换行符'\n'
输出:
最大公约数
备注:输出的时候,不需要输出换行符'\n'
样例输入:
4
5 10 15 20
样例输出:
5
本人抛砖引玉,求更简练的代码~~??另外此代码省去了判别参数传入错误的情况,以使各位看官清晰了解代码!
描述:计算多个(最多100个,最少一个)正整数(正整数的范围是:1~20000)的最大公约数。公约数是指:能被所有的整数整除的整数。
运行时间限制:无限制
内存限制:无限制
输入:
第一个数字是整数的数量,后面是每个整数的具体值;
备注:读取的时候,不需要读入换行符'\n'
输出:
最大公约数
备注:输出的时候,不需要输出换行符'\n'
样例输入:
4
5 10 15 20
样例输出:
5
本人抛砖引玉,求更简练的代码~~??另外此代码省去了判别参数传入错误的情况,以使各位看官清晰了解代码!
#include <iostream> using namespace std; int gcd(int a, int b); int gcdd(int* p, int len); int main() { int num = 1; int i;// 由于不同编译器对for初始条件处定义的局部性不一致,故 放在这里! cin>>num; int *p = new int[num]; for (i = 0; i < num; i++) { cin>>*(p+i); } cout<<gcdd(p, num); delete [] p; return 0; } int gcdd(int* p, int len) { int* pp = new int[len]; int res =0; memcpy(pp, p, len * sizeof(int)); for (int i = 1; i < len; i++) { *pp = gcd(*pp, *(pp+i)); } res = *pp; delete [] pp; return res; } int gcd(int a, int b) { if (0 == a % b) { return b; } return gcd(b, a % b); }
相关文章推荐
- C++求四个正整数最大公约数的方法
- [c++]求两个正整数的最大公约数
- [C++]求两正整数的最大公约数
- 【算法】用c/c++求两正整数的最大公约数
- 求两个正整数的最大公约数 使用c++ class编写
- 算法如功夫——C++输入两个数求它们的最大公约数
- C/C++训练1---最大公约数与最小公倍数
- C++/C经典算法百题--(39-42)年龄几何,三色球问题,两个正整数的最大公约数和(GCD)和最小公倍数(LCM)
- C/C++训练1---最大公约数与最小公倍数
- C/C++训练1---最大公约数与最小公倍数
- c++实验7--最大公约数与最小公倍数
- C++ 复习一 最大公约数
- c++学习日志 求最大公约数
- 最小共倍数和最大公约数--C++
- 华为编程大赛资格赛第4轮题目,求n个数的最大公约数
- C/C++训练1---最大公约数与最小公倍数
- 输入2个正整数A,B,求A与B的最大公约数。 Input 2个数A,B,中间用空格隔开。(1<= A,B <= 10^9) Output 输出A与B的最大公约数。
- C语言计算两个正整数的最大公约数与最大公倍数
- 最大公约数c++
- 【c++程序】求最大公约数