반응형
https://www.acmicpc.net/problem/2830
2830번: 행성 X3
상근이는 초등학교 졸업 여행으로 외계 행성 X3에 방문했었다. 이 행성에 사는 사람들의 이름은 모두 자연수이다. 행성의 거주민은 모두 서로를 알고 있다. 두 X3인은 그들의 친밀도를 자신의 이
www.acmicpc.net
[ 문제풀이 ]
1. cnt 배열을 만들어 입력받는 모든 숫자의 2진수 자릿수 별 1의 개수를 저장합니다.
2. XOR을 할 경우 서로 다를 때 1이 되므로 (1 << i) * 0의 개수*1의 개수를 모두 더해 출력합니다.
[ 소스코드 ]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #include<iostream> #define ll long long using namespace std; int N; int cnt[20]; int main() { scanf("%d", &N); for (int i = 0; i < N; i++) { int num; scanf("%d", &num); int bi = 0; while (num != 0) { cnt[bi] += (num & 1); num >>= 1; bi++; } } ll ans = 0; for (int i = 0; i < 20; i++) { ans += (1LL << i) * 1LL * cnt[i] * (1LL * N - cnt[i]); } printf("%lld", ans); } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 14940번 - 쉬운 최단거리 (C++) (0) | 2023.06.22 |
---|---|
[ 백준 ] 17071번 - 숨바꼭질 5 (C++) (0) | 2023.06.21 |
[ 백준 ] 5022번 - 연결 (C++) (1) | 2023.06.19 |
[ 백준 ] 2669번 - 직사각형 네개의 합집합의 면적 구하기 (C++) (0) | 2023.06.18 |
[ 백준 ] 2164번 - 카드2 (C++) (0) | 2023.06.17 |