51Nod 1179 最大的最大公约数
2017-10-15 14:02
246 查看
1179 最大的最大公约数
给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。
Input
Output
Input示例
Output示例
代码
给出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)
Output
输出两两之间最大公约数的最大值。
Input示例
4 9 15 25 16
Output示例
5 n^2的做法显然不行 看数据范围 S[i]<=1000000 所以我们可以枚举每一个数的所有因子 这是可以开下的 然后找从大到小 找出现过两次以上的数 记为ans
1 #include <cmath> 2 #include <cstdio> 3 #include <cctype> 4 5 const int MAXN=1000010; 6 7 int n; 8 9 int cnt[MAXN]; 10 11 inline void read(int&x) { 12 int f=1;register char c=getchar(); 13 for(x=0;!isdigit(c);c=='-'&&(f=-1),c=getchar()); 14 for(;isdigit(c);x=x*10+c-48,c=getchar()); 15 x=x*f; 16 } 17 18 int hh() { 19 read(n); 20 for(int x,i=1;i<=n;++i) { 21 read(x); 22 for(int j=1;j<=sqrt(x);++j) if(x%j==0) ++cnt[j],++cnt[x/j]; 23 } 24 for(int i=1000000;i;--i) 25 if(cnt[i]>=2) { 26 printf("%d\n",i); 27 break; 28 } 29 return 0; 30 } 31 32 int sb=hh(); 33 int main(int argc,char**argv) {;}
代码
相关文章推荐
- 51nod 1179 最大的公约数
- 51NOD 1179 最大的最大公约数 筛法
- 51nod-1179-最大的最大公约数
- 51nod 1179 最大的最大公约数
- 51Nod-1179 最大的最大公约数【暴力】
- 51Nod 1179 最大的最大公约数
- 51nod:1179 最大的最大公约数
- 51Nod-1179-最大的最大公约数
- 最大的最大公约数 51Nod - 1179
- 51nod-1179 最大的最大公约数
- 51NOD 1179 最大的最大公约数
- 51nod 1179 最大的最大公约数
- 51nod 1179 最大的最大公约数
- 51nod 1179:最大的最大公约数
- 51nod 1179 最大的最大公约数
- 20140926 【 初等数论 】 51nod 1179 . 最大的最大公约数
- 51nod 1179 最大的最大公约数
- 51nod 1179 最大的最大公约数
- 51nod 1179 最大的最大公约数 (好题!!!!)
- 51nod 1179:最大的最大公约数