题目描述
来源
OpenJudge网站 —— 百练习题集-第4146号习题
要求
总时间限制: 1000ms 内存限制: 65536kB
描述

如上图,有3个方格,每个方格里面都有一个整数a1,a2,a3。已知0 <= a1, a2, a3 <= n,而且a1 + a2是2的倍数,a2 + a3是3的倍数, a1 + a2 + a3是5的倍数。你的任务是找到一组a1,a2,a3,使得a1 + a2 + a3最大。
输入
一行,包含一个整数n (0 <= n <= 100)。
输出
一个整数,即a1 + a2 + a3的最大值。
样例输入
3
样例输出
5
解题思路
下面介绍两种解法。第一种解法比第二种解法效率高,大致快4-5倍。
解法一的思路
-
a1 + a2 + a3的和最大不会超过3 * n。由于和是5的倍数,所以最大是 ⌊ ( 3 ∗ n ) / 5 ⌋ \lfloor(3 * n) / 5 \rfloor ⌊(3∗n)/5⌋。最小是0。因此,和的取值只能是0, 5, 10, 15, …, ⌊ ( 3 ∗ n ) / 5 ⌋ \lfloor(3 * n) / 5 \rfloor ⌊(3∗n)/5⌋ 中的一个。
-
令top_5 = ⌊ ( 3 ∗ n ) / 5 ⌋ \lfloor(3 * n) / 5 \rfloor

本文探讨了OpenJudge第4146号习题“数字方格”的两种解题策略,详细介绍了每种方法的思路及参考代码。解法一通过优化搜索策略,效率远高于穷举法的解法二,适用于解决类似数学问题。
——OpenJudge百练习题:数字方格&spm=1001.2101.3001.5002&articleId=105065939&d=1&t=3&u=24eab39e1b5d4cd4a6aaae721191846f)
1320

被折叠的 条评论
为什么被折叠?



