페이지

10736번: XOR삼형제 2

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


#include<cstdio>
int t, n;
int main() {
    scanf("%d", &t);
    while (t--) {
        scanf("%d", &n);
        int ck[101] = { 0, }, cnt[101] = { 0, }, p, r = 0;
        do {
            p = 0;
            for (int i = 1; i < n; i++)
                for (int j = i + 1; j <= n; j++)
                    if (!ck[i] && !ck[j] && (i^j) <= n && !ck[i^j]) if (++cnt[i^j] > cnt[p]) p = i^j;
            ck[p] = 1;
            r++;
        } while (p);
        printf("%d\n", n + 1 - r);
        for (int i = 1; i <= n; i++) if (!ck[i]) printf("%d ", i);
        puts("");
    }
    return 0;
}

댓글 없음 :

댓글 쓰기