CF2108A.Permutation Warm-Up

入门

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

对于一个长度为 n∗n ^{\text{∗}} 的排列 pp,我们定义函数:

f(p)=∑i=1n∣pi−i∣f(p) = \sum_{i=1}^{n} \lvert p_i - i \rvert

给定一个数字 nn。你需要计算当考虑从 11 到 nn 的所有可能排列时,函数 f(p)f(p) 可以取到多少个不同的值。

$ ^{\text{∗}}$ 一个长度为 nn 的排列是指由 11 到 nn 的 nn 个不同整数按任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是排列(22 在数组中出现了两次),[1,3,4][1,3,4] 也不是排列(n=3n=3 但数组中出现了 44)。

输入格式

每个测试包含多个测试用例。第一行包含测试用例的数量 tt(1≤t≤1001 \le t \le 100)。接下来是测试用例的描述。

每个测试用例的第一行包含一个整数 nn(1≤n≤5001 \leq n \leq 500)——排列中数字的个数。

输出格式

对于每个测试用例,输出一个整数——给定排列长度下函数 f(p)f(p) 的不同值的数量。

输入输出样例

  • 输入#1

    5
    2
    3
    8
    15
    43

    输出#1

    2
    3
    17
    57
    463

说明/提示

考虑输入的前两个例子。

对于 n=2n = 2,只有 22 个排列——[1,2][1, 2] 和 [2,1][2, 1]。f([1,2])=∣1−1∣+∣2−2∣=0f([1, 2]) = \lvert 1 - 1 \rvert + \lvert 2 - 2 \rvert = 0,f([2,1])=∣2−1∣+∣1−2∣=1+1=2f([2, 1]) = \lvert 2 - 1 \rvert + \lvert 1 - 2 \rvert = 1 + 1 = 2。因此,函数有 22 个不同的取值。

对于 n=3n=3,已经有 66 个排列:[1,2,3][1, 2, 3]、[1,3,2][1, 3, 2]、[2,1,3][2, 1, 3]、[2,3,1][2, 3, 1]、[3,1,2][3, 1, 2]、[3,2,1][3, 2, 1],对应的函数值分别为 00、22、22、44、44 和 44,总共有 33 个不同的取值。

翻译由 DeepSeek V3 完成

输入解题思路,AI测评打分。不知道怎么写?

首页