E. Max Gcd
2024-10-03 12:15:55
单点时限: 2.0 sec
内存限制: 512 MB
一个数组a,现在你需要删除某一项使得它们的gcd最大,求出这个最大值。
输入格式
第一行输入一个正整数n,表示数组的大小,接下来一行n个数,第i个数为ai。(2≤n≤105,1≤ai≤109)
输出格式
输出删除掉某个数以后的gcd的最大值。
样例
input
4
2 4 8 1
output
2
input
4
1 2 3 4
output
1
提示
样例一:删除第四个元素后,2,4,8的最大公因子为2。
样例二:无论删除哪一个,最大公因子都为1。
思路:一个前缀GCD和一个后缀GCD当删除某一个数时,然后遍历删除每一个数,比较当前GCD ,,并记录
#include<iostream>
#include<algorithm>
#define N 100010
using namespace std;
typedef long long ll; ll arr[N];
ll pre[N]={},od[N]={};//前缀与后缀
int main(){ int n;
cin>>n; for(int i=;i<=n;i++){
cin>>arr[i];
} pre[]=arr[];
od[n]=arr[n]; for(int i=;i<=n;i++){
pre[i]=__gcd(pre[i-],arr[i]);//前缀gcd
} for(int i=n-;i>;i--){
od[i]=__gcd(od[i+],arr[i]);//后缀gcd
} ll max1=;
ll p;
for(int i=;i<=n;i++){
if(i==){
p=od[i+];
}
else {
p=__gcd(pre[i-],od[i+]);//pre[i-1]指的是前i-1个个数的gcd,od[i+1]指的是从i+1到第N个数的gcd
if(p>max1){
max1=p;
}
}
}
cout<<max1<<endl;
return ;
}
最新文章
- 总结整理 -- python系列
- [No00000D]word如何批量删除超链接 怎么去掉网址保留文字
- SpringMVC利用拦截器防止SQL注入
- swift 中delegate的使用
- 获取hadoop的源码和通过eclipse关联hadoop的源码
- PHP数据类型和常量
- 利用 Composer 完善自己的 PHP 框架(一)——视图装载
- 在Ubuntu中USB连接手机调试
- 【转】foxmail突然打不开了,双击没反应,怎么回事呀
- java里面的equals和hashcode的总结
- C# Chart 折线图 多条数据展示
- 2014年去哪儿网笔试题--有两个文件context.txt和words.conf,请尝试将他们合并成为一段文字,并打印出来。
- uva 10891 Game of Sum(区间dp)
- callback用法简介
- Linux在什么样的从脚本文件数据库sh格式改变sql格式
- 工控中的windows
- Python标准库--Scope
- 如何提高windows的性能
- 使用JAXB解析xml文件(一)
- python 正则指北之我的总结