HDU 6025 Coprime Sequence
2017-05-07 20:58
381 查看
Coprime Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 44 Accepted Submission(s): 34
[align=left]Problem Description[/align]
Do you know what is called ``Coprime Sequence''? That is a sequence consists of
n
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.
[align=left]Input[/align]
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 integer n(3≤n≤100000)
in the first line, denoting the number of integers in the sequence.
Then the following line consists of n
integers a1,a2,...,an(1≤ai≤109),
denoting the elements in the sequence.
[align=left]Output[/align]
For each test case, print a single line containing a single integer, denoting the maximum GCD.
[align=left]Sample Input[/align]
3
3
1 1 1
5
2 2 2 3 2
4
1 2 4 8
[align=left]Sample Output[/align]
1
2
2
题意:给出一列数,去掉其中一个数,使得所有数的最大公因数最大。
枚举每一个数字,尝试去掉,然后求所有数的最大公因数,去掉就是求公因数时标记跳过。提取出前两个因子,和第三个求因子,得出的最大共因子,再和第四个数比较。。。中间适当做优化,有几种情况可以跳出循环。
#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;
}
相关文章推荐
- Coprime Sequence HDU - 6025
- HDU - 6025 Coprime Sequence(给出一行数,去掉其中一个数,求这行数的最大的最大公约数(gcd)))
- CSP认证训练题——Coprime Sequence HDU - 6025
- hdu 6025 Coprime Sequence
- HDU - 6025 Coprime Sequence(前缀,后缀,gcd)
- HDU 6025 Coprime Sequence
- Coprime Sequence HDU - 6025
- HDU 6025 Coprime Sequence 前缀gcd + 后缀gcd
- hdu 6025 Coprime Sequence (前后缀GCD)
- (HDU 6025 女生专场)Coprime Sequence 水题
- HDU 6025 Coprime Sequence (前后缀+GCD)
- HDU - 6025 Coprime Sequence
- HDU 6025 Coprime Sequence(前缀后缀GCD问题)
- HDU 6025 Coprime Sequence
- hdoj 6025 Coprime Sequence
- HDU 4135 Co-prime
- HDU 5072 Coprime(2014 Asia AnShan Regional Contest C)
- HDU 4135 Co-prime(容斥原理)
- HDU 5072 Coprime (单色三角形+容斥原理)
- HDU 4135 Co-prime 区间内与n互质的个数 容斥(入门