음이 아닌 정수 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 |