## [2433. Find The Original Array of Prefix Xor](https://leetcode.com/problems/find-the-original-array-of-prefix-xor/description/)
# 1. Tóm tắt đề bài
Bạn cần phải tìm một mảng $arr$ có $n$ phần tử, biết giá trị của mảng $pref$. $pref[i]$ được định nghĩa là [tổng $XOR$](https://www.loginradius.com/blog/engineering/how-does-bitwise-xor-work/) của $i$ phần tử đầu tiên trong dãy.
##### Giới hạn
$1 \le n \le 10^5$.
$1 \le pref[i] \le 10^6$.
# 2. Tiếp cận lời giải
**Độ phức tạp dự tính: $O(n)$**.
Ta vận dụng tính chất của phép toán $XOR$, ký hiệu là $\oplus$:
Nếu $a \oplus b = c$ ta có thể suy ra $a \oplus c = b$ và $c \oplus b = a$.
Dựa vào cách tính của hàm $pref$, ta có $pref[i] = pref[i - 1] \oplus arr[i]$. Từ đây, suy ra:
$arr[i] = pref[i] \oplus pref[i - 1].
# 3. Lời giải chi tiết
Sau khi rút ra nhận xét như phần tiếp cận, phần còn lại không quá khó để lập trình.
Code mẫu: https://leetcode.com/problems/find-the-original-array-of-prefix-xor/submissions/1087982511/
### Độ phức tạp thuật toán
Thời gian: $O(n)$
Bộ nhớ mở rộng: $O(1)$
# 4. Kết luận & Gợi ý mở rộng
Bài không khó, nhưng yêu cầu các bạn nắm chắc phần [các phép toán bitwise](https://vnoi.info/wiki/algo/basic/bitwise-operators.md). Hãy coi như đây là một trong những bài cơ bản nhé!