UVA 11827 Maximum GCD gcd

来源:互联网 发布:聚类分析数据 编辑:程序博客网 时间:2024/05/16 05:09

11827 - Maximum GCD

Time limit: 1.000 seconds

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2927

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 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



题意:给你一个T,表示有T行,每行不确定有几个数字,求出其中两个数的最大公约数。

解题思路:我们首先需要处理一下字符串,在写一个gcd的调用函数,两层for循环,暴力枚举。

#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;char str[200];int num[1000];int gcd(int a,int b){    if(b==0)        return a;    return gcd(b,a%b);}int main(){    int t;    scanf("%d",&t);    getchar();    while(t--)    {        gets(str);        int term=0,k=0;        for(int i=0; str[i]!='\0'; i++)            if(str[i]==' ')                num[k++]=term,term=0;            else                term=term*10+str[i]-'0';        if(term)            num[k++]=term;        sort(num,num+k);        int max1=0;        for(int i=k-1; i>=0&&num[i]>max1; i--)        {            for(int j=i-1; j>=0&&num[j]>max1; j--)            {                int term=gcd(num[i],num[j]);                if(term>max1)                    max1=term;            }        }        printf("%d\n",max1);    }    return 0;}



原创粉丝点击