11827 - Maximum GCD
Time limit: 1.000 seconds
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 Input | Output 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\n", &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\n", 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\n", &t);
while (t--)
{
getline(cin, s);
stringstream ss(s);
n = 0;
while (ss >> num[n])
++n;
printf("%d\n", cal());
}
return 0;
}