UVA 11827 Maximum GCD(读入技巧,stringstream的使用)

好久没来写blog了,不能颓了。

这道题的数据范围很小,n<=100.所以直接暴力就可以解决问题,然后,我们发现这个题的读入长度并没有要求,那么我们就需要应用stringstream这个字符串输入流

题目:

Given the N integers, you have to nd the maximum GCD (greatest common divisor) of every possible
pair of these integers.
Input
The rst 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 nd 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

代码:

#include<cstdio>
#include<iostream>
#include<sstream>
#include<string>
using namespace std;

int num[100], n;
string s;

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

int cal()
{
    int i, j, maxn = 0;
    for (i = 0; i < n - 1; ++i)
        for (j = i + 1; j < n; ++j)
            maxn = max(maxn, gcd(num[i], num[j]));
    return maxn;
}

int main()
{
    int t;
    scanf("%d\n", &t);
    while (t--)
    {
        getline(cin, s);//读入的是string类型的数据
        stringstream ss(s);//定义了一个输入流
        n = 0;
        while (ss >> num[n])//将字符串转化为int类型的数据,遇到空格和回车就结束转换
            ++n;
        printf("%d\n", cal());
    }
    return 0;
}
时间: 2024-10-28 16:09:43

UVA 11827 Maximum GCD(读入技巧,stringstream的使用)的相关文章

UVA - 11827 - Maximum GCD,10200 - Prime Time (数学)

两个暴力题.. 题目传送:11827 Maximum GCD AC代码: #include <map> #include <set> #include <cmath> #include <deque> #include <queue> #include <stack> #include <cstdio> #include <cctype> #include <string> #include <

uva 11827 Maximum GCD(输入技巧)

题意:对于给定的一组数,求该组数中两两gcd的最大值: 思路:简单gcd,亮点在于每组数的个数并不提供,因此需要在读入是做出判断: #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; #define eps 1e-5 int t,i,j,k,num[50010],b,flag,shu,mm; int gcd(int a,int

UVA 11827 Maximum GCD

题目很水 暴力就能过 难点在如何输入没有停止的数 #include <iostream> #include <string.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #include <sstream> using namespace std; int gcd (int a,int b) { if(b==0) return a; else return gc

UVA 11827 Maximum GCD (输入流)

题目:传送门 题意:求n个数的最大公约数,暴力不会超时,难点在没有个数控制的输入. 题解:用特殊方法输入. #include <iostream> #include <cmath> #include <cstdio> #include <cstring> using namespace std; int gcd(int a,int b) { if(b==0) return a; return gcd(b,a%b); } int main() { int t;

UVA 10951 - Polynomial GCD(数论)

UVA 10951 - Polynomial GCD 题目链接 题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,并且n为素数. 思路:和gcd基本一样,只不过传入的是两个多项式,由于有%n这个条件,所以计算过程可以用乘法逆去计算除法模,然后最后输出的时候每项除掉首项的次数就是答案了. 代码: #include <stdio.h> #include <string.h> #include <vector> using namespace s

UVA 10827 Maximum sum on a torus

算法入门经典训练指南88页练习 ::这道题只要把原矩阵扩大4倍,那么其跟最大子矩阵的题目就很类似,把二维转化成一维,求最大的序列和,不过这个序列的长度不能超过n. 长度不能超过n? 那这道题又跟hdu 3415 HDU 3415 Max Sum of Max-K-sub-sequence (单调队列) 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorit

uva 10951 - Polynomial GCD(欧几里得)

题目链接:uva 10951 - Polynomial GCD 题目大意:给出n和两个多项式,求两个多项式在所有操作均模n的情况下最大公约数是多少. 解题思路:欧几里得算法,就是为多项式这个数据类型重载取模运算符,需要注意的是在多项式除多项的过程中,为了保证各项系数为整数,需要将整个多项式的系数整体扩大至一定倍数,碰到先除后模的时候要用逆元. #include <cstdio> #include <cstring> const int maxn = 105; int M; void

UVA 10951 Polynomial GCD 多项式欧几里德求最大公共多项式

今天作比赛遇上了HDU3892,都分析出来怎么做了,可惜不会求多项式的最大公共多项式,当时写了半天,案例也没有跑出来,赛后搜了一下题解,发现有大神做出了,而且是有模版的,不过又搜了一下关于这方面的题目,很少,只发现了这一道,所以先做一下这一道吧 题意,给你两个多项式,求他们的最大公共多项式,然后输出即可,无齿的套用了别人的模版,呵呵! #include<iostream> #include<cstdio> #include<list> #include<algor

UVA - 108 - Maximum Sum (简单贪心)

UVA - 108 Maximum Sum Time Limit: 3000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu Submit Status Description Background A problem that is simple to solve in one dimension is often much more difficult to solve in more than one dimension.