HDU6025-Coprime Sequence
来源:互联网 发布:unity3d制作2d游戏教程 编辑:程序博客网 时间:2024/05/21 19:22
Coprime Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total Submission(s): 0 Accepted Submission(s): 0
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
题意:一共n个数,去掉其中一个,问剩余n-1个数gcd的最大值
解题思路:rmq或者求前缀和后缀
RMQ:
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include <cmath>#include <map>#include <cmath>#include <set>#include <stack>#include <queue>#include <vector>#include <bitset>#include <functional>using namespace std;#define LL long longconst int INF=0x3f3f3f3f;int a[100006],n;int dp[100006][20];int gcd(int x,int y){ if(x>y) swap(x,y); while(y%x) { int k=y%x; y=x; x=k; } return x;}void init(){ for(int i=1;i<=n;i++) dp[i][0]=a[i]; for(int i=1;(1<<i)<=n;i++) for(int j=1;j+(1<<i)-1<=n;j++) dp[j][i]=gcd(dp[j][i-1],dp[j+(1<<(i-1))][i-1]);}int query(int l,int r){ int k=0; while(1<<(k+1)<=r-l+1) k++; return gcd(dp[l][k],dp[r-(1<<k)+1][k]);}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); init(); int ma=-1; for(int i=2;i<n;i++) { int k=query(1,i-1),kk=query(i+1,n); ma=max(ma,gcd(k,kk)); } ma=max(ma,query(2,n)); ma=max(ma,query(1,n-1)); printf("%d\n",ma); } return 0;}
前缀+后缀
#include <iostream> #include <cstdio> #include <cstring> #include <string> #include <algorithm> #include <cmath> #include <map> #include <cmath> #include <set> #include <stack> #include <queue> #include <vector> #include <bitset> #include <functional> using namespace std; #define LL long long const int INF=0x3f3f3f3f; int a[100005],x[100005],y[100005]; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&a[i]); x[0]=a[0]; for(int i=1; i<n; i++) x[i]=gcd(x[i-1],a[i]); y[n-1]=a[n-1]; for(int i=n-2; i>=0; i--) y[i]=gcd(y[i+1],a[i]); int ans=max(y[1],x[n-2]); for(int i=1; i<n-1; i++) ans=max(ans,gcd(x[i-1],y[i+1])); printf("%d\n",ans); } return 0; }
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
- Java中new File("."),new File(""),new File(".."),new File(".\\")的区别
- storm '*/stormconf.ser' does not exist 问题nimbus进程刚启动后就自动退出
- Linux中安装jdk的三种方式
- Maven 安装 以及 eclipse 配置Maven 插件
- Tesseract-OCR4.0版本在VS2015上的编译与运行
- HDU6025-Coprime Sequence
- [FAQ19483][SAT]双卡情况下如何显示两个STK icon图标
- 最短路径-弗洛伊德算法的java实现
- 文件描述符与缓冲区
- [leetcode]73. Set Matrix Zeroes
- java 生成不重复的随机数
- Java反射机制
- 归纳迁移学习算法---Adaboost 算法实例解析
- Educational Codeforces Round 19-D. Broken BST