題意#
給你一個 n,代表有一個數列的範圍是 1 ~ N
接著給你 n - 1 個數字
請你找出沒有出現的數字為何
思路#
主要利用相同數字互相 xor 會為 0 特性
拿一個變數 N 去 xor 範圍內所有的數字
接著再 xor 測資給你的數列
這樣,如果有出現在數列裡的數字就會 xor 兩次而被抵銷
沒有出現的數字會因為只有 xor 一次,所以遺留在 N 裡
最後輸出 N 即可
程式碼#
#include <bits/stdc++.h>
using namespace std;
#define WA() cin.tie(0)->sync_with_stdio(0)
#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;
}
