'''
[编程题] 构造队列
时间限制:1秒
空间限制:32768K
小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:
while(!Q.empty()) //队列不空,执行循环
{
int x=Q.front(); //取出当前队头的值x
Q.pop(); //弹出当前队头
Q.push(x); //把x放入队尾
x = Q.front(); //取出这时候队头的值
printf("%d\n",x); //输出x
Q.pop(); //弹出这时候的队头
}
做取出队头的值操作的时候,并不弹出当前队头。
小明同学发现,这段程序恰好按顺序输出了1,2,3,...,n。现在小明想让你构造出原始的队列,你能做到吗?
[注:原题样例第三行5有错,应该为3,以下已修正]
输入描述:
第一行一个整数T(T ≤ 100)表示数据组数,每组数据输入一个数n(1 ≤ n ≤ 100000),输入的所有n之和不超过200000。
输出描述:
对于每组数据,输出一行,表示原始的队列。数字之间用一个空格隔开,不要在行末输出多余的空格.
输入例子1:
4
1
2
3
10
输出例子1:
1
2 1
2 1 3
8 1 6 2 10 3 7 4 9 5
'''
'''
解题思路:找规律
我自己先按照题设手算了几组数据,然后又逆推了几组数据,找到了解这道题目的规律:
对于任意n>1的数,我们先取出n放入列表一中,此时列表一为[n]。
接着取出n-1,放入列表一的最前面,此时列表一为[n-1, n]
然后pop出列表一最后的元素放入列表一的最前面,此时列表已为[n, n-1]
继续取出n-2,放入列表一的最前面,此时列表一为[n-2, n, n-1]
pop出列表一最后的元素放入列表一的最前面,此时列表已为[n-1, n-2, n]
一直重复以上步骤直至取出1为止
不过直接用list做效率低,我用的是deque数据类型,效率可以提高一个数量级,思路类似上面的描述
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
[编程题] 构造队列
时间限制:1秒
空间限制:32768K
小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:
while(!Q.empty()) //队列不空,执行循环
{
int x=Q.front(); //取出当前队头的值x
Q.pop(); //弹出当前队头
Q.push(x); //把x放入队尾
x = Q.front(); //取出这时候队头的值
printf("%d\n",x); //输出x
Q.pop(); //弹出这时候的队头
}
做取出队头的值操作的时候,并不弹出当前队头。
小明同学发现,这段程序恰好按顺序输出了1,2,3,...,n。现在小明想让你构造出原始的队列,你能做到吗?
[注:原题样例第三行5有错,应该为3,以下已修正]
输入描述:
第一行一个整数T(T ≤ 100)表示数据组数,每组数据输入一个数n(1 ≤ n ≤ 100000),输入的所有n之和不超过200000。
输出描述:
对于每组数据,输出一行,表示原始的队列。数字之间用一个空格隔开,不要在行末输出多余的空格.
输入例子1:
4
1
2
3
10
输出例子1:
1
2 1
2 1 3
8 1 6 2 10 3 7 4 9 5
'''
'''
解题思路:找规律
我自己先按照题设手算了几组数据,然后又逆推了几组数据,找到了解这道题目的规律:
对于任意n>1的数,我们先取出n放入列表一中,此时列表一为[n]。
接着取出n-1,放入列表一的最前面,此时列表一为[n-1, n]
然后pop出列表一最后的元素放入列表一的最前面,此时列表已为[n, n-1]
继续取出n-2,放入列表一的最前面,此时列表一为[n-2, n, n-1]
pop出列表一最后的元素放入列表一的最前面,此时列表已为[n-1, n-2, n]
一直重复以上步骤直至取出1为止
不过直接用list做效率低,我用的是deque数据类型,效率可以提高一个数量级,思路类似上面的描述
'''
'''
代码运行结果:
答案正确:恭喜!您提交的程序通过了所有的测试用例
'''
from collections import deque
T = int(input())
for x in range(T):
n = int(input())
if n != 1:
array = deque([n])
for i in range(n-1, 0, -1):
d1 = array.popleft()
array.append(i)
array.append(d1)
results = map(str, list(reversed(array)))
print(' '.join(results))
else:
print(1)