#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==' ') break; }
//printf("len = %lld ",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 ",Max); } return 0; }
知识点:一直读入数据,直到键入回车键是停止。