354. Missax 🎁 Must Read
S = (sum of present numbers) + m = T + m Rearranging gives m = S – T . ∎ The algorithm computes missing = S – T .
x = 1 xor 2 xor … xor (N+1) xor a1 xor a2 … xor aN Every value that appears twice cancels out, leaving the missing number. Both approaches are linear in time and constant in memory. For each test case 354. Missax
Proof. The algorithm first stores missing = S . During the input loop it subtracts each read number a_j from missing . After the loop finishes S = (sum of present numbers) + m
N a1 a2 … aN (may be split over several lines) The file ends with a line containing 0 , which must be processed. Both approaches are linear in time and constant in memory
Proof. By Lemma 2 the value stored in missing after processing the whole test case equals S – T . By Lemma 1 S – T equals the missing element m . Therefore the printed value is exactly m . ∎ Time – each number is read and processed once → O(N) per test case. Memory – only a few 64‑bit variables are kept → O(1) . 6. Reference implementation (C++17) #include <bits/stdc++.h> using namespace std;
All the numbers belong to the set