題目連結:CSES-1083 Missing Number

題意

給你一個 n,代表有一個數列的範圍是 1 ~ N
接著給你 n - 1 個數字
請你找出沒有出現的數字為何

思路

主要利用相同數字互相 xor 會為 0 特性
拿一個變數 N 去 xor 範圍內所有的數字
接著再 xor 測資給你的數列
這樣,如果有出現在數列裡的數字就會 xor 兩次而被抵銷
沒有出現的數字會因為只有 xor 一次,所以遺留在 N 裡
最後輸出 N 即可

程式碼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <bits/stdc++.h>
using namespace std;
#define WA() ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL)
#define int long long

signed main() { WA();
    int n, xr = 0;
    cin >> n;
    vector<int> v(n-1);
    for (auto &i : v) cin >> i;
    for (int i = 0; i < n-1; i++) {
        xr ^= v[i]; xr ^= i+1;
    }
    xr ^= n;
    cout << xr;
}