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;
}