C
来源:互联网 发布:网络目标市场匹配题 编辑:程序博客网 时间:2024/06/05 02:26
Do you know what is called ``Coprime Sequence''? That is a sequence consists of n npositive 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.
In each test case, there is an integer
Then the following line consists of
331 1 152 2 2 3 241 2 4 8
122
这道题刚开始我就没有思路,看了一下别人的代码,原来还要用到前缀和后缀。思路如下:
依次遍历每个数,算出这堆数的左边最大公约数,然后求出这堆数右边的最大公约数,然后求出他们的共同的最大公约数,遍历每个最大公约数即为所求。
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int N=100005;int GCD(int x,int y){ if(x==0) return y; else return GCD(y%x,x); }int main(){ int T; scanf("%d",&T); while(T--) { int n,a[N],ar[N],al[N],MAX=0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); if(i==1) al[i]=a[i]; else al[i]=GCD(al[i-1],a[i]); } for(int i=n;i>0;i--) { if(i==n) ar[i]=a[i]; else ar[i]=GCD(ar[i+1],a[i]); } for(int i=1;i<=n;i++) { if(i==1) MAX=max(MAX,ar[2]); if(i==n) MAX=max(MAX,al[n-1]); else MAX=max(MAX,GCD(al[i-1],ar[i+1])); } printf("%d\n",MAX); } return 0;}
阅读全文
0 0
- c
- c
- c
- c
- C
- c
- c
- c
- C+
- c
- C
- c
- c
- c
- C
- C
- c
- C
- Java进阶(三十七)java 自动装箱与拆箱
- oracle 查询常用模板
- HTML5中Video.js自定义播放器必备知识点总结以及JS全屏API介绍
- margin或者padding值为4个、3个、2个、1个的时候分别是什么意思
- goto语句的七伤拳属性
- C
- 设计模式的应用场景(5)--单例模式
- os.popen()
- 在openwrt中设置mjpg_streamer开机自启动
- [leetcode]87. Scramble String
- IPython和IPython Notebook的安装和简单应用
- Java进阶(四十)Java类、变量、方法修饰符讲解 Java类修饰符
- 取随机数
- (八)事件主循环