반응형
https://www.acmicpc.net/problem/10464
10464번: XOR
입력의 첫 번째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 1000)가 주어진다. 다음 T 개의 줄에는 두 개의 정수 S와 F가 주어진다. (1 ≤ S ≤ F ≤ 1 000 000 000)
www.acmicpc.net
[ 문제풀이 ]
1. 1부터 N까지 XOR한 값을 구해보면 다음과 같은 규칙을 발견할 수 있습니다.
1 -> 1
2 -> 3
3 -> 0
4 -> 4
5 -> 1
6 -> 7
7 -> 0
8 -> 8
9 -> 1
.
.
.
N
즉, N % 4의 값이 1이면 1, 2이면 N + 1, 3이면 0 그리고 0이면 N입니다.
2. S부터 F까지의 값을 XOR한 값은 1부터 F까지 XOR한 값과 1부터 S - 1까지 XOR한 값을 XOR하면 됩니다.
3. 2의 값을 출력합니다.
[ 소스코드 ]
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 | #include<iostream> using namespace std; int XOR(int num) { int mod = num % 4; if (mod == 0) return num; if (mod == 1) return 1; if (mod == 2) return num + 1; if (mod == 3) return 0; } int main() { int T; scanf("%d", &T); for (int t = 0; t < T; t++) { int S, F; scanf("%d %d", &S, &F); printf("%d\n", XOR(S - 1) ^ XOR(F)); } } | cs |
반응형
'백준' 카테고리의 다른 글
[ 백준 ] 2164번 - 카드2 (C++) (0) | 2023.06.17 |
---|---|
[ 백준 ] 14497번 - 주난의 난(難) (C++) (0) | 2023.06.16 |
[ 백준 ] 7490번 - 0 만들기 (C++) (0) | 2023.06.14 |
[ 백준 ] 20437번 - 문자열 게임 2 (C++) (0) | 2023.06.13 |
[ 백준 ] 12919번 - A와 B 2 (C++) (0) | 2023.06.12 |