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