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