ACM 数论 Maximum GCD
滴,集训第二十三天打卡。
转眼集训已经过去一半了,今天是数论基础。
一眼看去,都是简单题,
一题题做来,都是坑啊坑…
UVA 11827 Maximum GCD
题目大意:求给定的一组数中,两两之间最大的GCD。
思路:这道题猛地一眼看,就是找一下GCD,一个函数可以搞定。但是输入就有失公正了…输入两个数之间的空格不一定只有一个,所以要用gets读入在一个个取出来…
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
char s[3000];
int a[102];
int gcd(int a,int b)
{
return b?gcd(b,a%b):a;
}
int main()
{
int n,i,j,len,u,sum,ans;
scanf("%d",&n);
getchar();
while(n--)
{
gets(s);
len=strlen(s);
u=0;
for(i=0;i<len;i++)
{
sum=0;
while(i<len&&s[i]!=' ')
{
sum=sum*10+s[i]-'0';
i++;
}
a[u++]=sum;
}
ans=0;
for(i=0;i<u;i++)
{
for(j=i+1;j<u;j++)
ans=max(ans,gcd(a[i],a[j]));
}
printf("%d\n",ans);
}
}
还没有评论,来说两句吧...