ACM 数论 Maximum GCD

来源:互联网 发布:西南交通大学网络教学 编辑:程序博客网 时间:2024/05/16 01:26

滴,集训第二十三天打卡。

转眼集训已经过去一半了,今天是数论基础。

一眼看去,都是简单题,

一题题做来,都是坑啊坑...


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);    }}


原创粉丝点击