본문 바로가기

알고리즘(백준 등) 공부

SWEA 10908. 짝수인 이항 계수

음이 아닌 정수 N이 주어진다. 이 때, N + 1개의 이항 계수(N 0)~(N N) 중에서 짝수인 것의 개수를 구하는 문제이다.

 

N을 이진수로 할 때 비트의 수를 c라고 하면  어떤 정수 N이 주어졌을 때, (N 0)~(N N)의 총 N+1개의 이항 계수 중 홀수의 개수는  2^c 개 이다. 전체 갯수에 2^c 를 빼주면 된다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int T = Integer.parseInt(br.readLine());
        
        StringBuilder sb = new StringBuilder();
        for (int tc = 1; tc <= T; tc++) {
            sb.append('#').append(tc).append(' ');
            long n = Long.parseLong(br.readLine());
            long bitCount = Long.bitCount(n);
            long oddCount = 1L << bitCount;
            sb.append(n+1 - oddCount).append('\n');
        }
        
        br.close();
        System.out.print(sb);
    }
}

'알고리즘(백준 등) 공부' 카테고리의 다른 글

SWEA 10804. 문자열의 거울상  (0) 2026.06.09
SWEA 10912. 외로운 문자  (0) 2026.06.08
SWEA 10965. 제곱수 만들기  (0) 2026.06.07
SWEA 10966. 물놀이를 가자  (0) 2026.06.04
SWEA 10993. 군주제와 공화제  (0) 2026.06.04