• A. Perfect Permutation


    time limit per test

    1 second

    memory limit per test

    256 megabytes

    input

    standard input

    output

    standard output

    You are given a positive integer nn.

    The weight of a permutation p1,p2,…,pnp1,p2,…,pn is the number of indices 1≤i≤n1≤i≤n such that ii divides pipi. Find a permutation p1,p2,…,pnp1,p2,…,pn with the minimum possible weight (among all permutations of length nn).

    A permutation is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array) and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

    Input

    Each test contains multiple test cases. The first line contains the number of test cases tt (1≤t≤1041≤t≤104). The description of the test cases follows.

    The only line of each test case contains a single integer nn (1≤n≤1051≤n≤105) — the length of permutation.

    It is guaranteed that the sum of nn over all test cases does not exceed 105105.

    Output

    For each test case, print a line containing nn integers p1,p2,…,pnp1,p2,…,pn so that the permutation pp has the minimum possible weight.

    If there are several possible answers, you can print any of them.

    Example

    input

    Copy

     
    

    2

    1

    4

    output

    Copy

    1
    2 1 4 3
    

    Note

    In the first test case, the only valid permutation is p=[1]p=[1]. Its weight is 11.

    In the second test case, one possible answer is the permutation p=[2,1,4,3]p=[2,1,4,3]. One can check that 11 divides p1p1 and ii does not divide pipi for i=2,3,4i=2,3,4, so the weight of this permutation is 11. It is impossible to find a permutation of length 44 with a strictly smaller weight.

    解题说明:水题,只需要找出一种结果,把n放到最前面即可。

    1. #include
    2. int main()
    3. {
    4. int tc;
    5. scanf("%d", &tc);
    6. while (tc--)
    7. {
    8. int n;
    9. scanf("%d", &n);
    10. printf("%d", n);
    11. for (int i = 1; i < n; i++)
    12. {
    13. printf(" %d", i);
    14. }
    15. printf("\n");
    16. }
    17. return 0;
    18. }

  • 相关阅读:
    模拟退火补完计划
    【题目讲解】ascii码值(空格、回车、0、1、2、3、a、b)
    【云原生之K8S】kubeadm v1.20 部署K8S 集群架构
    JUC并发包下
    什么是误差和残差
    ESP8266-Arduino编程实例-MAG3110磁力计驱动
    润和软件HopeStage与上海瑞美云LIS系统管理软件完成产品兼容性互认证
    Spring Boot 2.x系列【22】应用监控篇之Health端点
    最长连续子序列
    速度+价格,拼多多Temu正在革新跨境电商玩法
  • 原文地址:https://blog.csdn.net/jj12345jj198999/article/details/127974190