sliding_window_xor_3426.cpp (451B)
1 #include <algorithm> 2 #include <deque> 3 #include <iostream> 4 #include <vector> 5 6 int main() { 7 long long n, k, x, a, b, c, m{0}; 8 std::cin >> n >> k >> x >> a >> b >> c; 9 10 std::vector<long long> v(k); 11 for (long long i = 0; i < k; i++) { 12 v[i] = x; 13 m ^= x; 14 x = (a*x + b) % c; 15 } 16 17 long long sol{m}; 18 for (long long i = 0; i < n-k; i++) { 19 m ^= v[i%k]; 20 v[i%k] = (a*v[(i-1+k)%k] + b) % c; 21 m ^= v[i%k]; 22 sol ^= m; 23 } 24 25 std::cout << sol << "\n"; 26 }