数论 UVALive 2756

这道题目考察的n个不同的数环形排列,每次相邻两个数交换位置,这样由正序转变成逆序所需操作的最小次数t。

公式:环形排列:t= n/2*(n/2 - 1)/2 + (n+1)/2* ((n+1)/2 - 1)/2 

在这里在补充下线性排列的公式:t=n*(n-1)/2

#include<iostream>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,ans;
cin>>n;
ans=(n/2)*(n/2-1)/2+(n+1)/2*((n+1)/2-1)/2;
cout<<ans<<endl;
}
}

原文地址:https://www.cnblogs.com/hbutACMER/p/4240029.html