http://codeforces.com/problemset/problem/299/A
题意 :输入n个数,要求找出一个数能让其他所有的数整除,如果没有的话输出-1.有多个的话输出其中一个。
思路 :表示一开始看错题了,卡了好久,后来想了想就去翻译了一下,才懂什么意思。。。-.-||。。其实就是要找的话如果有这样一个数就一定是最小的那个数,所以只需要判断一下最小的那个数能不能被后边的数整除就可以了。
#include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> using namespace std ; int a[111000] ; int main() { int n ; while(cin>>n) { scanf("%d",&a[0]) ; //int minn = a[0] ; for(int i = 1 ; i < n ; i++) { scanf("%d",&a[i]) ; //minn = min(minn,a[i]) ; } sort(a,a+n) ; int flag = 1 ; for(int i = 1 ; i < n ; i++) { if(a[i] % a[0] != 0) { flag = 0 ; break ; } // cout<<a[i]<<endl ; } if(flag) printf("%d\n",a[0]) ; else printf("-1\n") ; } return 0 ; }