题意:n(1<n<100)组样例,每组样例输入一行m(1<m<100,未知)个数,求任意两个不同的数(ai,aj,i!=j)的最大公因数的最大值
题解:直接暴力,输入需要注意。
使用了gets。
代码:
#include <bits/stdc++.h>
#define int long long
#define dbg(x) cout << #x << "===" << x << endl
#define pb push_back
using namespace std;
const int N = 100 + 10;
int n, m, a[N];
char c[100010]; //足够大
int x, i, j, len, g;
signed main() {
scanf("%lld\n", &n);
for (int _ = 1; _ <= n; _++) {
gets(
c); //一半来说,都可以这样读入吧,字符大小一半也不太可能超过1e8,不然会MLE/TLE
x = 0, m = 0, len = strlen(c);
for (i = 0; i < len; i++) {
if (c[i] >= '0' && c[i] <= '9') x = x * 10 + (c[i] - '0');
if (c[i] == ' ' || i == len - 1) a[++m] = x, x = 0;
}
// for (int i = 1; i <= m; i++) cout << i << " " << a[i] << endl;
g = 0;
for (i = 1; i <= m; i++)
for (j = i + 1; j <= m; j++) g = max(g, __gcd(a[i], a[j]));
printf("%lld\n", g);
}
return 0;
}
/*
input:::
3
10 20 30 40
7 5 12
125 15 25
output:::
20
1
25
*/