HDU 6025 Coprime Sequence
来源:互联网 发布:算法设计与分 考题 编辑:程序博客网 时间:2024/05/18 13:45
Coprime Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 44 Accepted Submission(s): 34
Problem Description
Do you know what is called ``Coprime Sequence''? That is a sequence consists ofn positive integers, and the GCD (Greatest Common Divisor) of them is equal to 1.
``Coprime Sequence'' is easy to find because of its restriction. But we can try to maximize the GCD of these integers by removing exactly one integer. Now given a sequence, please maximize the GCD of its elements.
``Coprime Sequence'' is easy to find because of its restriction. But we can try to maximize the GCD of these integers by removing exactly one integer. Now given a sequence, please maximize the GCD of its elements.
Input
The first line of the input contains an integer T(1≤T≤10) , denoting the number of test cases.
In each test case, there is an integern(3≤n≤100000) in the first line, denoting the number of integers in the sequence.
Then the following line consists ofn integers a1,a2,...,an(1≤ai≤109) , denoting the elements in the sequence.
In each test case, there is an integer
Then the following line consists of
Output
For each test case, print a single line containing a single integer, denoting the maximum GCD.
Sample Input
331 1 152 2 2 3 241 2 4 8
Sample Output
122
题意:给出一列数,去掉其中一个数,使得所有数的最大公因数最大。
枚举每一个数字,尝试去掉,然后求所有数的最大公因数,去掉就是求公因数时标记跳过。提取出前两个因子,和第三个求因子,得出的最大共因子,再和第四个数比较。。。中间适当做优化,有几种情况可以跳出循环。
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;inline int GCD(int a,int b){ int t; if(b>a) { t=a; a=b; b=t; } while(b) { t=b; b=a%b; a=t; } return a;}int main(){ int a[100001],b[100001]; int t,n,i,j; scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=0; i<n; i++) { scanf("%d",&a[i]); } int y,M=0; b[0]=b[1]=-1; for(j=0; j<n; j++) { y=a[0]; if(j==0) y=a[1]; for(i=0; i<n; i++) { if(i==j) continue; y=GCD(a[i],y); if(y<=M) break; if(i==j+1)//对比记录的共因子大小是否有变化,没变化则不用继续,节约时间 { if(y==b[i]) break; } if(i==j+2)//记录上一组处理到这个位置的共因子大小 { b[i]=y; } } if(M<y) M=y; } printf("%d\n",M); } return 0;}
0 0
- HDU 6025 Coprime Sequence
- HDU 6025 Coprime Sequence
- hdu 6025 Coprime Sequence
- Coprime Sequence HDU
- Coprime Sequence HDU
- hdoj 6025 Coprime Sequence
- HDU 6025 Coprime Sequence (前后缀+GCD)
- (HDU 6025 女生专场)Coprime Sequence 水题
- HDU 6025 Coprime Sequence(前缀后缀GCD问题)
- HDU 6025 Coprime Sequence 前缀gcd + 后缀gcd
- Coprime Sequence
- Coprime Sequence
- Coprime HDU
- Coprime HDU
- Coprime HDU
- HDU6025-Coprime Sequence
- HDU6205 Coprime Sequence
- Coprime Sequence(优化)
- 项目更换jdk时不能保存,报错 Could not write file
- 【ASP.NET MVC】——非初识
- 算法导论 练习题 12.3-6
- Iptables 使用总结
- Single Number
- HDU 6025 Coprime Sequence
- 概率难题-hdu4602-隔板法,暴力
- [leetcode] 567. Permutation in String
- leetcode 3. Longest Substring Without Repeating Characters
- 2017中国大学生程序设计竞赛
- 高德地图之路线规划
- Python中dict详解
- Service和intentservice的区别
- 1060: 【绝对值排序】