HDU6025 Coprime Sequence
来源:互联网 发布:傲剑易经升级数据大全 编辑:程序博客网 时间:2024/05/22 12:55
Coprime Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 72 Accepted Submission(s): 51
Problem Description
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.
``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
Source
2017中国大学生程序设计竞赛 - 女生专场
Recommend
jiangzijing2015 | We have carefully selected several similar problems for you: 6032 6031 6030 6029 6028
题意就不多说了,作为菜鸡看到如此做法我一定要发表一下;
不多BB,看代码:
#include<iostream>
#include<cstring>
#include<stdio.h>
using namespace std;
int a[100005];//a[i]表示1到i所有数的GCD
int b[100005];//b[i]表示i到n所有数的GCD
int s[100005];
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
if(i==1)
{
a[i]=s[i];
continue;
}
if(i==n)
b[i]=s[i];
a[i]=gcd(a[i-1],s[i]);
}
for(int i=n-1;i>=1;i--)
b[i]=gcd(b[i+1],s[i]);
int ans=1;
for(int i = 1; i <= n; ++i)
{
if(i == 1) ans=max(ans,b[2]);
else if(i == n) ans=max(ans,a[n - 1]);
else ans = max(ans, gcd(a[i - 1],b[i + 1]));
}
cout<<ans<<endl;
}
}
#include<cstring>
#include<stdio.h>
using namespace std;
int a[100005];//a[i]表示1到i所有数的GCD
int b[100005];//b[i]表示i到n所有数的GCD
int s[100005];
int gcd(int a,int b)
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
ios::sync_with_stdio(false);
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>s[i];
if(i==1)
{
a[i]=s[i];
continue;
}
if(i==n)
b[i]=s[i];
a[i]=gcd(a[i-1],s[i]);
}
for(int i=n-1;i>=1;i--)
b[i]=gcd(b[i+1],s[i]);
int ans=1;
for(int i = 1; i <= n; ++i)
{
if(i == 1) ans=max(ans,b[2]);
else if(i == n) ans=max(ans,a[n - 1]);
else ans = max(ans, gcd(a[i - 1],b[i + 1]));
}
cout<<ans<<endl;
}
}
0 0
- HDU6025-Coprime Sequence
- HDU6025 Coprime Sequence
- HDU6025-Coprime Sequence-简单数学
- hdu6025 Coprime Sequence(2017女生赛)
- HDU6025 Coprime Sequence【前缀GCD+后缀GCD】
- HDU6025 Coprime Sequence (思路题)
- HDU6025 Coprime Sequence (前缀后缀处理)
- HDU6025 Coprime Sequence —— 前缀和 & 后缀和
- Coprime Sequence
- Coprime Sequence
- HDU6205 Coprime Sequence
- Coprime Sequence(优化)
- HDU 6025 Coprime Sequence
- hdoj 6025 Coprime Sequence
- HDU 6025 Coprime Sequence
- Coprime Sequence HDU
- hdu 6025 Coprime Sequence
- Coprime Sequence HDU
- 执行了不等待结果? 异步操作MySQL:Tornado-MySQL
- django搭建个人博客06,发布文章页
- POJ 1044 Date bugs 笔记
- IIS发布ASP.NET应用常见错误及解决办法
- 一个真正的全栈工程师
- HDU6025 Coprime Sequence
- 什么是网关及网关作用
- LeetCode刷题(C++)——Divide Two Integers(Medium)
- 深入理解JVM-类加载
- 为什么JDK源码中,无限循环大多使用for(;;)而不是while(true)?
- POJ 1815 Friendship(字典序最小最小割)
- 第一章动态网页开发基础
- 活动调度
- Gym