题目描述
小 A 有一个长度为 n 的序列 a1,a2,⋯,an。
他想从这些数中选出一些数 b1,b2,⋯,bk 满足:对于所有 i (1≤i≤k),bi 要么是序列 b 中的最大值,要么存在一个位置 j 使得 bj>bi 且 bi+bj+gcd(bi,bj)=lcm(bi,bj)。
- 如果你不知道 gcd 和 lcm 是什么,可以点击最底部的「帮助/提示」部分的链接。
小 A 想让选出的数之和尽量大。请求出这个最大值。
输入格式
第一行一个整数 n,表示序列的长度。
第二行 n 个整数 a1,a2,⋯,an。
输出格式
输出一行一个整数表示答案。
提示
「样例 1 说明」
可以选择 b={2,3},因为 2+3+gcd(2,3)=lcm(2,3)。
「数据范围与约定」
本题采用捆绑测试。
- Subtask 1(5 points):n≤2;
- Subtask 2(20 points):n≤17;
- Subtask 3(15 points):ai≤2×103;
- Subtask 4(15 points):n≤2×103;
- Subtask 5(10 points):n≤5×104;
- Subtask 6(10 points):ai≤107;
- Subtask 7(25 points):无特殊限制。
对于 100% 的数据,1≤n≤3×105,1≤ai≤109。
「帮助/提示」
gcd 表示最大公约数,lcm 表示最小公倍数。
「来源」
【LGR-075】洛谷 8 月月赛 II Div.2 & SWTR-06 & EZEC Round 3。
idea & solution & data by Alex_Wei。