Maximum GCD(UVA 11827)

Problem: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 N 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   3 10 20 30 40      7 5 12          125 15 25     Sample Output      20                 1                25

题解:读入的时候处理一下,可以直接读入一个字符串,然后把数再按十进制还原存到数组中,或者直接用ungetc来退回一下。

#include <bits/stdc++.h>
using namespace std;
int a[150];
int main()
{
    int n, maxx = -1;
    char op;
    while(~scanf("%d",&n))
    {
        while(n --)
        {
            maxx = -1;
            int i = 0;
            while(1)
            {
                scanf("%d",&a[i++]);
                while((op=getchar())==' '); // 如果是空格的话用ungetc退格
                ungetc(op, stdin);
                if(op == '
') break;
            }
            for(int j = 0; j < i; j ++)
            {
                for(int k = j + 1; k < i; k ++)
                {
                    if(__gcd(a[j],a[k]) > maxx) maxx = __gcd(a[j],a[k]);
                }
            }
            printf("%d
",maxx);
        }
    }
    return 0;
}
原文地址:https://www.cnblogs.com/lcchy/p/10139573.html