求任意两个数的gcd最大值。
#include<cstring> #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<stack> #include<vector> #define N 110 using namespace std; int n; int s[N]; int gcd(int b,int a) { return b==0?a:gcd(a%b,b); } int main() { //freopen("test.in","r",stdin); int t; cin>>t; getchar(); while(t--) { char a[10100]; gets(a); int len=0; int b=0; for(int i=0; a[i]; i++) { if(a[i]==' ') { if(b) s[len++]=b; b=0; continue; } b=b*10+a[i]-48; } if(b) s[len++]=b; int ans=0; for(int i=0; i<len; i++) { for(int j=i+1; j<len; j++) { ans=max(ans,gcd(s[i],s[j])); } } printf("%d\n",ans); //getchar(); } return 0; }
原文地址:http://blog.csdn.net/acm_baihuzi/article/details/46540029