博客版权已保护:转载请注明出处,谢谢。

V - Maximum GCD

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
typedef long long ll;

ll f(ll a,ll b)
{
    if(a%b == 0) return b;
    else f(b,a%b);
}

int main()
{
    ll a,b,T;
    scanf("%lld",&T);
    while(T--)
    {
        ll A[105],len=0,Max=0;
        memset(A,0,sizeof(A));
        char ch;

while(1) /*这一段是代码的关键部分,实现的功能是当键入回车键时,会结束读入数组; {                       scanf("%lld",&A[len++]);      用len记录数组下标;   while((ch=getchar())==' ')     当读入的字符是空格时,一直循环 ; ungetc(ch,stdin); ungetc函数:字符返回函数,如果读入到的东西不是”空格“的话,那么将getchar读到的数据返回到缓冲区,下一次scanf就会读进去,如果是回车,那么就break; if(ch=='\n') break;         }

//printf("len = %lld\n",len); for(int i=0;i<len-1;i++) { for(int j=i+1;j<len;j++) { Max=max(f(A[i],A[j]),Max); } } printf("%lld\n",Max); } return 0; }

知识点:一直读入数据,直到键入回车键是停止。

posted on 2018-05-03 20:06  superhero11  阅读(272)  评论(0编辑  收藏  举报

导航