就是输入有点问题,找最大的时候可以暴力
#include<stdio.h>
#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
int gcd(int a,int b)
{
if(b==0)
return a;
else
return gcd(b,a%b);
}
char a[10005];
int b[10005];
int main()
{
int t;
scanf("%d",&t);
getchar();
char s[100];
while(t--)
{
gets(a);
int l=strlen(a);
int k=0;
int f=0;
int p=0;
memset(b,0,sizeof(b));
for(int i=0;i<=l;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
s[k++]=a[i];
f=1;
continue;
}
if(f)
{
s[k]='\0';
b[p++]=atof(s);
f=0;
k=0;
}
else if(a[i]==' ') continue;
}
int maxn=0;
for(int i=0;i<p;i++)
{
for(int j=i+1;j<p;j++)
{
maxn=max(maxn,gcd(b[i],b[j]));
}
}
printf("%d\n",maxn);
}
}