안녕하세요. 오늘은 순열을 만들 거예요.

문제

https://www.acmicpc.net/problem/22952

아이디어

최대한 mod N의 값이 0이 되도록 합시다.
첫번째 수는 N입니다.
두번째와 세번째 수는 1과 N-1입니다.
네번째와 다섯번째 수는 2와 N-2입니다.
이렇게 차례대로 해나가면 됩니다.

소스코드

#include <iostream>
#define ll long long
using namespace std;

int main(void)
{
    ios_base::sync_with_stdio(false); cin.tie(NULL);
    ll N, i;
    cin >> N;
    cout << N << ' ';
    for (i = 1; i < N / 2; i++) cout << i << ' ' << N - i << ' ';
    if (N == 1) return 0;
    cout << N / 2 << ' ';
    if (N % 2 == 1)  cout << N / 2 + 1;
}


감사합니다.

0개의 댓글