aboutsummaryrefslogtreecommitdiff
path: root/11_sliding_window_problems/sliding_window_xor_3426.cpp
diff options
context:
space:
mode:
Diffstat (limited to '11_sliding_window_problems/sliding_window_xor_3426.cpp')
-rw-r--r--11_sliding_window_problems/sliding_window_xor_3426.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/11_sliding_window_problems/sliding_window_xor_3426.cpp b/11_sliding_window_problems/sliding_window_xor_3426.cpp
new file mode 100644
index 0000000..0f21ce3
--- /dev/null
+++ b/11_sliding_window_problems/sliding_window_xor_3426.cpp
@@ -0,0 +1,26 @@
1#include <algorithm>
2#include <deque>
3#include <iostream>
4#include <vector>
5
6int 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}

Generated with cgit - Back to sebastiano.tronto.net