这是我在Interviewstreet 代码打印期间遇到的一个问题。我无法找到解决方案,甚至无法思考其方向。如果有人可以帮助我找到灵魂,或者向我解释需要如何处理问题,我将不胜感激。
给定数字 1, 2, 3, .., N,按顺序排列它们,使相邻数字的乘积之和最大化。
例如:如果 N = 3,我们将它们排序为 (1, 2, 3),则产品的总和为 1*2 + 2*3 = 8,如果我们将它们排序为 (1, 3,2),则总和产品数量为 1*3 + 3*2 = 9。
输入格式:
输入的第一行包含 T,即测试用例的数量。然后按照 T 行,每行包含一个整数 N。
输出格式 :
对于每个测试用例,打印相邻数字乘积的最大总和。
样本输入:
2 2 4
样本输出:
2 23
解释 :
在第一个测试用例中,给定的排列是 (1, 2)。所以乘积的最大总和是 1*2。在第二个测试用例中,数字是 (1,2,3,4)。排列 1,3,4,2 的相邻数字的乘积之和为 1*3+3*4+4*2 = 23。没有其他排列的相邻数字的乘积之和超过 23。
约束:
1 <= T <= 10 1 <= N <= 200000