WHU个人赛第二场C——前缀和&&后缀和
2024-09-05 00:30:09
题目
题意:给定 $n$ 个整数,去掉其中一个数使得剩下数字的gcd最大,求最大的gcd.($3 \leq n \leq 100000$)
分析
枚举每一个位置,显然每次枚举都计算所有数的gcd存在大量的重复计算,所以先计算出gcd前缀和gcd后缀。$pre \_ gcd[i] = gcd(a_1, a_2, \cdots, a_i), \ suf \_ gcd[i] = gcd(a_n, a_{n-1}, \cdots, a_{n-i+1})$
#include<cstdio>
using namespace std; const int maxn = + ;
int n, num[maxn], a[maxn], b[maxn]; int gcd(int a, int b)
{
return b == ? a : gcd(b, a % b);
} int main()
{
int T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
for(int i = ;i < n;i++) scanf("%d", &num[i]); a[] = num[];
for(int i = ;i < n;i++) a[i] = gcd(num[i], a[i-]);
b[] = num[n - ];
for(int i= n-;i >= ;i--) b[n - - i] = gcd(num[i], b[n- i - ]); int ans = -;
if(a[n-] > ans) ans = a[n-];
if(b[n-] > ans) ans = b[n-];
for(int i = ;i < n-;i++)
{
int tmp = gcd(a[i-], b[n--i]);
if(tmp > ans) ans = tmp;
}
printf("%d\n", ans);
}
return ;
}
最新文章
- grep 命令过滤配置文件中的注释和空行
- Net重温之路一
- Python自动化之异常处理
- mysql 概念和逻辑架构
- bzoj4154
- python 数据类型(列表)学习笔记
- Cocos2d-x win7下 android环境搭建
- As Easy As A+B
- 使用XML的五种场合,XML基本规则,XML的术语,结构与语法
- 1227: [SDOI2009]虔诚的墓主人
- 流处理与消息队列------《Designing Data-Intensive Applications》读书笔记16
- Windows安装SVN服务器和客户端
- django下的xadmin相关设置
- Java框架spring 学习笔记(四):BeanPostProcessor接口
- Android-获取Html元素
- Python编程练习:简单的闹钟提醒
- Win2003不显示移动硬盘、U盘解决方法
- php在线编辑本地文件方法共享
- Wireshark小技巧
- Go编译安装