题目描述 && 样例
https://www.acwing.com/problem/content/3781/
解析
选i,除i以外所有数加上 $j$($j$ 为操作次数)由于最后和自己比(相等),所以前面的操作可以化成把选的 $i$减去$j$的操作。明白了这点,就好做了,我下面在画图解释一下:
1 2 3 4 5 … $n$
第一步选1,变成:
0 2 3 4 5 … $n$
第二步选2,变成:
0 0 3 4 5 … $n$
第三步选3,变成:
0 0 0 4 5 … $n$
以此类推,每次只要慢慢把 1~$n$ 选一遍,就好了。输出方案,只要输出 1~$n$?!
上代码
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int t; //测试组数
int n; //自己看题吧
scanf("%d",&t); //读入测试组数
while(t--) //进行t组测试
{
scanf("%d",&n); //n个数
printf("%d\n",n);
for(int i=1;i<=n;i++) printf("%d ",i); //输出1~n
printf("\n");
}
return 0;
}