2235 - 换位置

M个人围成一圈,每分钟相邻的两个人可以交换位置(只能有一对交换)。求使M个人的顺序颠倒(即每个人左边相邻的人换到右边,右边相邻的人换到左边)所需的最少时间(分钟数)。

题目输入

第一行为测试数据的组数n,以后n行中每行为一个小于32767的正整数,表示M

题目输出

对于每组测试数据,输出一个数,表示最少需要的分钟数。

输入/输出样例

题目输入

3
4
5
6

题目输出

2
4
6

C++解答

#include<cstdio>
int read()
{
    char c=getchar();
    int x=0;
    while(c<'0'||c>'9')c=getchar();
    for(;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
    return x;
}
int main()
{
	int t,n;
	t=read();
	while(t--)
		n=read(),printf("%d\n",(n>>1)*(n>>1)-(n&1?0:n>>1));
	return 0;
}

时间限制 1 秒
内存限制 128 MB
讨论 统计
上一题 下一题