cses

My solution for the coding challenges of cses.fi
git clone https://git.tronto.net/cses
Download | Log | Files | Refs | README

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 }