题目背景
这是在算法设计与分析课程讲完回溯法和分支限界法之后布置的一道作业题,小 P 不会,遂请教于小 T,小 T 一眼秒了并且把时间复杂度降低了很多,为了证明你比小 T 强你需要也来秒一下。
题目描述
省流版题意:
给定正整数 $n$,将集合 $\{1,2,3,\dots,n\}$ 划分成若干个集合 $S_1,S_2,\dots,S_k$,你需要保证如果 $x$ 被划分到集合 $S_i$ 那么有 $|S_i|$ 整除 $x$,同时你需要保证只有一个元素的集合尽可能少。如果有多种划分方案任意一种都可以。
输入格式
本题有多组测试数据。
输入第一个数 $T$ 表示测试数据组数,接下来依次输入每组测试数据。
对于每组测试数据输入一行一个正整数 $n$。
输出格式
对于每组测试数据:
输出一行 $n$ 个正整数 $s_1,s_2,\dots,s_n$,其中 $s_i$ 表示数字 $i$ 被划分到集合中的最小值。
样例数据
样例 1 输入
1
3
样例 1 输出
1 2 3
子任务
对于所有数据保证 $1\le T\le 10^4$,$1\le n\le 10^5$,$1\le \sum n\le 10^5$。
提示
欢迎大家来选北京大学信科开设的算法设计与分析(实验班),这门课你可以学到很多有用的算法知识,课号 04833060。