F - Maximum GCD——(UVA 11827)

简介:

传送门
Password:nefu
题目描述

题目大意:
首先有给定一个 T,T组数据,然后给你一组数,求出其中两两最大公约数中最大的值。

解题思路:
这个题一看多简单呀,就是一个暴力就完事儿啦,可是这是在有正常输入的时候,现在的问题是不知道输入多少个数,所以我们要解决的问题就是输入格式的问题,这里就要说几个函数getline
getline()是一个流类库的一个成员函数,其书写形式是:cin.geline(v,n);// getline()和cin.geline()应该是一样 ,只是参数不同,其中参数v用来指定存放字符串的缓冲区地址,第二个参数n指定缓冲区长度。使用getline(cin,i,?)函数可以输入带空格的整行字符 ,第三个参数默认为’/n’。
还有一个函数是stringstream 这个的用途是可以将字符串转化为数字,所以这个题就是输入有坑啊。。。。
上代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
#include <stack>
#include <sstream>
#include <string>
using namespace std;

#define MM(a) memset(a,0,sizeof(a))

typedef long long LL;
typedef unsigned long long ULL;
const int MAXN = 1e3+5;
const int INF = 1e9+5;
const int MOD = 1000000007;
const double eps = 1e-7;
int GCD(int a, int b)
{
    if(b == 0)
        return a;
    return GCD(b, a%b);
}
int arr[MAXN];
int main()
{
    int n, m;
    ///cin>>n;
    scanf("%d\n",&n);
    while(n--)
    {
        ///getchar();
        string str;
        getline(cin, str);
        stringstream stream(str);
        int cnt = 0;
        while(stream>>arr[cnt])
        {
            cnt++;
        }
        int Max = -INF;
        for(int i=0; i<cnt; i++)
        {
            for(int j=i+1; j<cnt; j++)
            {
                Max = max(Max,GCD(arr[i],arr[j]));
            }
        }
        cout<<Max<<endl;
    }
    return 0;
}
目录
相关文章
|
14天前
G - Prime Ring Problem(深搜)
G - Prime Ring Problem(深搜)
|
6月前
|
Java
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
hdu1016 Prime Ring Problem【素数环问题(经典dfs)】
24 0
|
9月前
UVa11679 - Sub-prime
UVa11679 - Sub-prime
34 0
HDU-1016,Prime Ring Problem(DFS+素数)
HDU-1016,Prime Ring Problem(DFS+素数)