2020 ICPC 亚洲区域赛(南京) K Co-prime Permutation

2020 ICPC 亚洲区域赛(南京) K Co-prime Permutation
在这里插入图片描述在这里插入图片描述
思路分析:
这个题给我一种纸老虎的感觉,其实读完题后和队友分析感觉不难,只要分清楚 k 的奇偶然后相邻数字两两交换就行了,外加有特殊情况单独列出来,最后注意一下输出格式,每个数据之间是有空格的(因为格式不对,还wa了两发QAQQQ

AC代码:

#include <bits/stdc++.h>

#define ll long long
const ll N = 10e6 + 5;
using namespace std;

int main() {
    
    
    ll n, k;
    while (~scanf("%lld%lld", &n, &k)) {
    
    
        if (k == 0) {
    
    
            printf("-1\n");
            continue;
        } else if (k == 1) {
    
    
            for (ll i = 1; i <= n; i++) {
    
    
                if(i == n) {
    
    
                   printf("%lld\n",i);
                } else {
    
    
                    printf("%lld ", i);
                }
            }
            continue;
        } else if (k > 1 && k % 2 == 0) {
    
    
            for (ll i = 2; i <= k; i += 2) {
    
    
                printf("%lld %lld ", i, i - 1);
            }
        } else if (k > 1 && k % 2 == 1) {
    
    
            printf("1 ");
            for (ll i = 3; i <= k; i += 2) {
    
    
                printf("%lld %lld ", i, i - 1);
            }
        }
        if (k < n) {
    
    
            for (ll i = k + 1; i <= n; i++) {
    
    
                if (i == n) {
    
    
                    printf("%lld\n",i);
                } else {
    
    
                    printf("%lld ", i);
                }
            }
        }
        if ( k == n) {
    
    
            printf("\n");
        }
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45654671/article/details/112406923