链接:http://acm.hdu.edu.cn/showproblem.php?pid=6025
题意:给出一个序列,这个序列的最大公约数为1,求去掉一个数之后的最大公约数
思路:果然就是数学学得不好,补题的时候知道是由前缀后最大公约数来求。具体就是:
pre[i]是到i为止的前面的数的最大公约数
nex[i]是从i开始到最后的数的最大公约数
ans再找他们之间的最大公约数
代码:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
int a[100010];
int p