发现仅当$n%4=0时候,符合构造条件。
设所求数列有n项:
前一半;后一半
计算两列差值(前项和后
项)
发现
若,结果为奇数,破坏奇偶性。
那么问题就很简单了:先输出前项偶数,再输出后
项奇数,最后输出两个数列的差即可。
using namespace std;
int main()
{
long long int t;
long long int n;
cin >> t;
for (int i = 0; i < t; i++)
{
cin >> n;
if (n % 4 != 0)
cout << "NO" << endl;
else
{
cout << "YES" << endl;
for (int j = 2; j <= n; j += 2)
cout << j << " ";
for (int j = 1; j < n - 1; j += 2)
cout << j << " ";
cout << (2 + n) * n / 4 - (n / 2 - 1) * (n / 2 - 1) << endl;
}
}
return 0;
}

京公网安备 11010502036488号