欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
CF1780B.GCD Partition
GCD Partition
题目描述
在 Kira 的家中,Josuke 看到桌子上有一张写着任务的纸条。
任务内容如下。有一个长度为 的数组 。对这个数组进行如下操作:
- 选择一个整数 ;
- 将数组分成 个子段;
- 计算每个子段的和,并将这些和写入另一个数组 (其中子段 的和为 );
- 这种划分的最终得分为 。
你的任务是找到一种划分方式,使得得分最大。Josuke 对这个任务很感兴趣,但他不擅长计算机科学。请你帮他找到最大可能的得分。
将数组分成 个子段,指的是 对数 ,满足 ,且对于每个 有 ,同时 且 。这些数对表示子段。
表示数组 的最大公约数(GCD)。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
对于每个测试用例,第一行包含一个整数 (),表示数组 的长度。
第二行包含 个整数 (),表示数组 本身。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一个整数,表示最优划分下的最大得分。
说明/提示
在第一个测试用例中,你可以选择 ,将数组划分为子段 和 。
这样划分的得分为 $\gcd(a_1 + a_2, a_3 + a_4) = \gcd(2 + 2, 1 + 3) = \gcd(4, 4) = 4$。
在第四个测试用例中,你可以选择 ,将数组划分为子段 。
这种划分的得分为 。
由 ChatGPT 4.1 翻译
样例
6
4
2 2 1 3
2
1 2
3
1 4 5
6
1 2 1 1 1 3
10
12 30 37 88 12 78 89 17 2 12
6
7 7 7 7 7 7
4
1
5
3
1
21
在线编程 IDE
建议全屏模式获得最佳体验
| 进入全屏编程 | Alt+E |
| 递交评测 | Ctrl+Enter |
| 注释/取消注释 | Ctrl+/ |
| 缩放字体 | Ctrl+滚轮 |