Welcome

首页 / 软件开发 / 数据结构与算法 / UVa 11827 Maximum GCD:gcd&读入技巧

UVa 11827 Maximum GCD:gcd&读入技巧2014-07-24

11827 - Maximum GCD

Time limit: 1.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2927

Given the N integers, you have to find the maximum GCD(greatest common divisor) of every possible pair of these integers.

Input

The first line of input is an integer N(1<N<100) that determines the number of test cases.

The following N lines are the N test cases. Each test case contains M (1<M<100) positive integers that you have to find the maximum of GCD.

Output

For each test case show the maximum GCD of every possible pair.

Sample InputOutput for Sample Input
3
10 20 30 40
7  5 12
125 15 25
20
1
25
C风格:

/*0.012s*/#include<cstdio>#include<algorithm>using namespace std;int num[100], n;int gcd(int a, int b){return b ? gcd(b, a % b) : a;}int cal(){int i, j, maxn = 0;for (i = 0; i < n - 1; ++i)for (j = i + 1; j < n; ++j)maxn = max(maxn, gcd(num[i], num[j]));return maxn;}int main(){int t;char ch;scanf("%d
", &t);while (t--){n = 0;while (true){scanf("%d", &num[n++]);while ((ch = getchar()) == " ");ungetc(ch, stdin);if (ch == 10 || ch == -1) break;}printf("%d
", cal());}return 0;}

C++风格:

/*0.009s*/#include<cstdio>#include<iostream>#include<sstream>#include<string>using namespace std;int num[100], n;string s;int gcd(int a, int b){return b ? gcd(b, a % b) : a;}int cal(){int i, j, maxn = 0;for (i = 0; i < n - 1; ++i)for (j = i + 1; j < n; ++j)maxn = max(maxn, gcd(num[i], num[j]));return maxn;}int main(){int t;scanf("%d
", &t);while (t--){getline(cin, s);stringstream ss(s);n = 0;while (ss >> num[n])++n;printf("%d
", cal());}return 0;}
作者署名:csdn博客 synapse7