題目鏈結
給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如:n = 4,4個數為:9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。
input
第1行:乙個數n,表示輸入正整數的數量。(2 <= n <= 50000)
第2 - n + 1行:每行1個數,對應輸入的正整數.(1 <= s
i i
<= 1000000)
output
輸出兩兩之間最大公約數的最大值。
sample input
49152516
sample output
5
思路:這是乙個典型的數學思維題,與我們所學的輾轉相除法求最大公約數,沒有一點關係(一定超時)。主要的思路:max1(a1,a1,a3,a4......an),gad=max(1,max1);這樣我們就可以換一種方法列舉。我們可以另開乙個陣列標記數字的出現次數,在來兩個for迴圈
從max1開始列舉,內層是它的倍數,如果它的倍數出現過兩次以上,這這個數就是最大公約數(因為從大到小的列舉)。
#include #include #define maxn 1000000+10
int num[maxn];
int book[maxn];
int n,m;
int main()
for(int i=max1; i>=1; i--)
}if(ans>=2)
break;
}printf("%d\n",k);
}return 0;
}
51nod 最大的最大公約數
這道題挺有意思,讓求最大的兩兩最大公約數,很顯然暴力直接做複雜度太高。可以利用試除法,列舉每乙個數的因子,如果某個因子出現超過了兩次,就可以進行判斷,因為題目要求兩兩。最大公約數一定是某個數的因子。include includeusing namespace std int cnt 50005 an...
51nod1179最大的最大公約數
題目大意 給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如 n 4,4個數為 9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。input 第1行 乙個數n,表示輸入正整數的數量。2 n 50000 第2 n 1行 每行1個數,對應輸入的正整數.1 s i 100...
51nod 1179 最大的最大公約數
給出n個正整數,找出n個數兩兩之間最大公約數的最大值。例如 n 4,4個數為 9 15 25 16,兩兩之間最大公約數的最大值是15同25的最大公約數5。input 第1行 乙個數n,表示輸入正整數的數量。2 n 50000 第2 n 1行 每行1個數,對應輸入的正整數.1 s i 1000000 ...